Показать сообщение отдельно
  #1  
Старый 30.12.2011, 23:39
Аватар для ALexandr555
ALexandr555 ALexandr555 вне форума
Специалист
 
Регистрация: 09.10.2010
Адрес: Тольятти
Сообщения: 803
Версия Delphi: Delphi 7
Репутация: 2064
По умолчанию передача данных 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;
отправляю сигнал о передаче base
получаю разрешение ок
передаю размер
получаю разрешение и отправляю файл

но похоже что никаких разрешений не приходит
Ответить с цитированием