|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
|
Опции темы | Поиск в этой теме | Опции просмотра |
#1
|
||||
|
||||
передача данных TcpServer TcpClient
получение файла код клиента
Код:
procedure TForm1.Button1Click(Sender: TObject); var msg : string; sz : integer; stream: TMemoryStream; begin tcpClient1.RemoteHost:=Edit1.Text; tcpClient1.Active := true; if TcpClient1.Connect then begin TcpClient1.Sendln('basa'); msg := Tcpclient1.Receiveln; sz := StrToInt(msg); stream := TMemoryStream.Create; stream.SetSize(sz); Tcpclient1.ReceiveBuf(stream.Memory^, sz); stream.SaveToFile('base.txt'); TcpClient1.Disconnect; end else showmessage('Error connecting'); tcpClient1.Active := false; end; Код:
procedure TForm1.TcpServer1Accept(Sender: TObject; ClientSocket: TCustomIpClient); var stream: TMemoryStream; msg: string; sz: integer; begin msg := ClientSocket.Receiveln; if (msg= 'basa') then begin stream := TMemoryStream.Create; stream.LoadFromFile('ServBase\base1.txt'); ClientSocket.Sendln(inttostr(stream.Size)); ClientSocket.SendBuf(stream.Memory^, stream.Size); end Цитата:
да и собственно как передать данные с клиента сервер Код:
procedure TForm1.TcpServer1Accept(Sender: TObject; ClientSocket: TCustomIpClient); var stream: TMemoryStream; msg: string; sz: integer; begin msg := ClientSocket.Receiveln; if (msg= 'basa') then begin stream := TMemoryStream.Create; stream.LoadFromFile('ServBase\base1.txt'); ClientSocket.Sendln(inttostr(stream.Size)); ClientSocket.SendBuf(stream.Memory^, stream.Size); end else if msg = 'base' then begin ClientSocket.Sendln('ok'); stream := TMemoryStream.Create; sz := StrToInt(msg); stream.SetSize(sz); ClientSocket.Sendln('ok'); ClientSocket.ReceiveBuf(stream.Memory^, sz); stream.SaveToFile('ServBase\base1.txt'); stream.Free; end; end; клиент Код:
procedure TForm1.Button3Click(Sender: TObject); var stream: TMemoryStream; msg: string; begin tcpClient1.Active := true; if TcpClient1.Connect then begin stream := TMemoryStream.Create; stream.LoadFromFile('base.txt'); TcpClient1.Sendln('base'); if TcpClient1.Receiveln = 'ok' then 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; получаю разрешение ок передаю размер получаю разрешение и отправляю файл но похоже что никаких разрешений не приходит |
#2
|
||||
|
||||
Код:
else if msg = 'base' then begin ClientSocket.Sendln('ok'); stream := TMemoryStream.Create; msg := ClientSocket.Receiveln; sz := StrToInt(msg); stream.SetSize(sz); ClientSocket.Sendln('ok'); ClientSocket.ReceiveBuf(stream.Memory^, sz); stream.SaveToFile('ServBase\base1.txt'); stream.Free; end; вопрос как сделать оповещение о загрузке/отправке файла? сразу после TcpClient1.SendBuf(stream.Memory^, stream.Size); ClientSocket.ReceiveBuf(stream.Memory^, sz); вставлять Отправлено/принято? |
#3
|
||||
|
||||
оповещение сделал..
при сохранении файла на клиенте выдаю что окей при сохранении на сервере шлю клиенту окей но все таки как решить что иногда приходит не полностью вместе с р*є р*є р*є р*є р*є р*є р*є |
#4
|
||||
|
||||
черт, файл весом 600кб передался на половину а остальную половину заполнили пробелы
я где то читал что подключение закрывается до передачи файла подскажите что сделать |
#5
|
|||
|
|||
а как долго делают монтаж локальной сети?
|