发送能够成功,但是接收到的总是少一个字符,不知道为什么??

解决方案 »

  1.   

    procedure TForm1.Button1Click(Sender: TObject);
    begin
      ServerSocket1.Open;
    end;procedure TForm1.BitBtn1Click(Sender: TObject);
    begin
      ClientSocket1.Open;
    end;procedure TForm1.Button2Click(Sender: TObject);
    var
      S: string;
    begin
      S := UTF8Encode(Edit1.Text);
      ClientSocket1.Socket.SendText(S);
    end;procedure TForm1.ServerSocket1ClientRead(Sender: TObject;
      Socket: TCustomWinSocket);
    var
      Buf: array [0..100] of Char;
      iLen: Integer;
      S: string;
    begin
      iLen := Socket.ReceiveLength;
      Socket.ReceiveBuf(Buf, iLen);
      Buf[iLen] := #0;
      S := StrPas(Buf);
      Memo1.Lines.Add(Format('%d, %s', [iLen, S]));
      Memo1.Lines.Add(Format('%s', [UTF8Decode(S)]));
    end;
      

  2.   

    建议这样接收..procedure TForm1.ServerSocket1ClientRead(Sender: TObject;
      Socket: TCustomWinSocket);
    var
      iLen: Integer;
      S: string;
    begin
      setlength(s,3000);//可以设为其它数.
      iLen:=Socket.ReceiveBuf(pchar(s)^, length(s));
      setlength(s,iLen);
    ...........
    end;