Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > Интернет и сети
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 18.12.2011, 19:51
Аватар для ALexandr555
ALexandr555 ALexandr555 вне форума
Специалист
 
Регистрация: 09.10.2010
Адрес: Тольятти
Сообщения: 803
Версия Delphi: Delphi 7
Репутация: 2064
По умолчанию отправка файла через TcpServer/TcpClient

сервер
Код:
unit Unit1;
 
interface
 
uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, Sockets, StdCtrls;
 
type
  TForm1 = class(TForm)
    Edit1: TEdit;
    Button1: TButton;
    TcpServer1: TTcpServer;

    procedure TcpServer1Accept(Sender: TObject;
      ClientSocket: TCustomIpClient);
    procedure Button1Click(Sender: TObject);

  private
    { Private declarations }
  public
    { Public declarations }
  end;
 
var
  Form1: TForm1;
 
implementation

{$R *.dfm}
 
 
procedure TForm1.TcpServer1Accept(Sender: TObject;
  ClientSocket: TCustomIpClient);
var
  stream: TMemoryStream;
  msg: string;
  sz: integer;
begin
  if ClientSocket.Connect then
  begin
    msg := ClientSocket.Receiveln;
      stream := TMemoryStream.Create;
      sz := StrToInt(msg);
      stream.SetSize(sz);
      ClientSocket.Sendln('ok');

      ClientSocket.ReceiveBuf(stream.Memory^, sz);
      stream.SaveToFile('otchet.txt');
      stream.Free;
    end;

    ClientSocket.Disconnect;
  end;
procedure TForm1.Button1Click(Sender: TObject);
begin
TcpServer1.LocalHost:=edit1.Text;
TcpServer1.Open;
end;

end.

клиент
Код:
unit Unit1;
 
interface
 
uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, Sockets;
 
type
  TForm1 = class(TForm)



    Button1: TButton;
    Edit1: TEdit;
    TcpClient1: TTcpClient;
    procedure Button1Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;
 
var
  Form1: TForm1;
 
implementation

{$R *.dfm}
 
procedure TForm1.Button1Click(Sender: TObject);
var
  stream: TMemoryStream;
  msg: string;
begin
  tcpClient1.Remotehost:=edit1.Text;
  tcpClient1.Active := true;

  if TcpClient1.Connect then
  begin
    stream := TMemoryStream.Create;
    stream.LoadFromFile('otchet.txt');
    TcpClient1.Sendln(IntToStr(stream.Size));
    if TcpClient1.Receiveln = 'ok' then
      TcpClient1.SendBuf(stream.Memory^, stream.Size);
    tcpClient1.Active := false;
    TcpClient1.Disconnect;
  end
  else showmessage('Error connecting');
end;


end.

локально на одном пк все работает если ставить 127.0.0.1
а вот по инету уже не работает, не работает и тогда если у сервера 127.0.0.1 а у клиента, что запускаю на этом же пк, мой айпи.
срабатывает showmessage('Error connecting');
в чем дело вот?
Цитата:
object TcpServer1: TTcpServer
bmBlocking
LocalPort = '9999'
OnAccept = TcpServer1Accept


object TcpClient1: TTcpClient
bmThreadBlocking
RemotePort = '9999'
Ответить с цитированием
  #2  
Старый 18.12.2011, 20:35
Аватар для PhoeniX
PhoeniX PhoeniX вне форума
Always hardcore!
 
Регистрация: 04.03.2009
Адрес: СПб
Сообщения: 3,239
Версия Delphi: GCC/FPC/FASM
Репутация: 62149
По умолчанию

У сервера прямое соединение с сетью, или роутер/файрвол? В файрволе (брэндмауэре Windows?) порт разрешён? Сервер слушает соединения со всех IP, или только с выделенных?
__________________
Оставайтесь хорошими людьми...
VK id2634397, ds [at] phoenix [dot] dj
Ответить с цитированием
  #3  
Старый 18.12.2011, 21:10
Аватар для ALexandr555
ALexandr555 ALexandr555 вне форума
Специалист
 
Регистрация: 09.10.2010
Адрес: Тольятти
Сообщения: 803
Версия Delphi: Delphi 7
Репутация: 2064
По умолчанию

не прямое, через свич, порты все должны быть разрешены
Ответить с цитированием
  #4  
Старый 18.12.2011, 23:05
Аватар для PhoeniX
PhoeniX PhoeniX вне форума
Always hardcore!
 
Регистрация: 04.03.2009
Адрес: СПб
Сообщения: 3,239
Версия Delphi: GCC/FPC/FASM
Репутация: 62149
По умолчанию

Так должны быть, или?
__________________
Оставайтесь хорошими людьми...
VK id2634397, ds [at] phoenix [dot] dj
Ответить с цитированием
  #5  
Старый 19.12.2011, 00:14
Аватар для ALexandr555
ALexandr555 ALexandr555 вне форума
Специалист
 
Регистрация: 09.10.2010
Адрес: Тольятти
Сообщения: 803
Версия Delphi: Delphi 7
Репутация: 2064
По умолчанию

да там везде стоит любой разрешен и айпи и порт, разве не в проге что то не то?
Ответить с цитированием
  #6  
Старый 19.12.2011, 00:26
Аватар для PhoeniX
PhoeniX PhoeniX вне форума
Always hardcore!
 
Регистрация: 04.03.2009
Адрес: СПб
Сообщения: 3,239
Версия Delphi: GCC/FPC/FASM
Репутация: 62149
По умолчанию

Может и в ней. Сложно говорить, не видя всех настроек компонентов и не имея кода. Но, на правах штатного экстрасенса форума, рискну предположить, что ошибка в 1647 байте екзешника
__________________
Оставайтесь хорошими людьми...
VK id2634397, ds [at] phoenix [dot] dj
Ответить с цитированием
  #7  
Старый 19.12.2011, 00:32
Аватар для ALexandr555
ALexandr555 ALexandr555 вне форума
Специалист
 
Регистрация: 09.10.2010
Адрес: Тольятти
Сообщения: 803
Версия Delphi: Delphi 7
Репутация: 2064
По умолчанию

код выше свойства компонентов аналогично
вобще другая программа тоже не реагирует хотя раньше вроде работала, на 1 пк сервер и клиент с 127.0.0.1 в ней так же только работают.

может тут что не то?
WAN Settings

http://s57.radikal.ru/i155/1112/52/ac6aa96d2679.png

Последний раз редактировалось ALexandr555, 19.12.2011 в 00:38.
Ответить с цитированием
  #8  
Старый 19.12.2011, 00:35
Аватар для PhoeniX
PhoeniX PhoeniX вне форума
Always hardcore!
 
Регистрация: 04.03.2009
Адрес: СПб
Сообщения: 3,239
Версия Delphi: GCC/FPC/FASM
Репутация: 62149
По умолчанию

Это совсем весь код? Ну, тогда я ничем не могу помочь. Ставь Delphi на сервер, садись рядом с ним с ноутбуком, отладчик в зубы, и поехали.

Есть у меня предположение, что если на сервере в Edit1 ввести 0.0.0.0 (слушать на всех адресах), то будет получше...
__________________
Оставайтесь хорошими людьми...
VK id2634397, ds [at] phoenix [dot] dj
Ответить с цитированием
  #9  
Старый 19.12.2011, 00:42
Аватар для ALexandr555
ALexandr555 ALexandr555 вне форума
Специалист
 
Регистрация: 09.10.2010
Адрес: Тольятти
Сообщения: 803
Версия Delphi: Delphi 7
Репутация: 2064
По умолчанию

ну да весь
все адресса не помогают, я проверяю все это на одном пк сейчас
Ответить с цитированием
Ответ


Delphi Sources

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 03:33.


 

Сайт

Форум

FAQ

RSS лента

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2023

ВКонтакте   Facebook   Twitter