|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
|
Опции темы | Поиск в этой теме | Опции просмотра |
#1
|
||||
|
||||
отправка файла через 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'); в чем дело вот? Цитата:
|
#2
|
||||
|
||||
У сервера прямое соединение с сетью, или роутер/файрвол? В файрволе (брэндмауэре Windows?) порт разрешён? Сервер слушает соединения со всех IP, или только с выделенных?
Оставайтесь хорошими людьми... VK id2634397, ds [at] phoenix [dot] dj |
#3
|
||||
|
||||
не прямое, через свич, порты все должны быть разрешены
|
#4
|
||||
|
||||
Так должны быть, или?
Оставайтесь хорошими людьми... VK id2634397, ds [at] phoenix [dot] dj |
#5
|
||||
|
||||
да там везде стоит любой разрешен и айпи и порт, разве не в проге что то не то?
|
#6
|
||||
|
||||
Может и в ней. Сложно говорить, не видя всех настроек компонентов и не имея кода. Но, на правах штатного экстрасенса форума, рискну предположить, что ошибка в 1647 байте екзешника
Оставайтесь хорошими людьми... VK id2634397, ds [at] phoenix [dot] dj |
#7
|
||||
|
||||
код выше свойства компонентов аналогично
вобще другая программа тоже не реагирует хотя раньше вроде работала, на 1 пк сервер и клиент с 127.0.0.1 в ней так же только работают. может тут что не то? WAN Settings http://s57.radikal.ru/i155/1112/52/ac6aa96d2679.png Последний раз редактировалось ALexandr555, 19.12.2011 в 00:38. |
#8
|
||||
|
||||
Это совсем весь код? Ну, тогда я ничем не могу помочь. Ставь Delphi на сервер, садись рядом с ним с ноутбуком, отладчик в зубы, и поехали.
Есть у меня предположение, что если на сервере в Edit1 ввести 0.0.0.0 (слушать на всех адресах), то будет получше... Оставайтесь хорошими людьми... VK id2634397, ds [at] phoenix [dot] dj |
#9
|
||||
|
||||
ну да весь
все адресса не помогают, я проверяю все это на одном пк сейчас |