Sockt Receivebuf此处接收到的最后一位丢失,请问是哪里出问题
以下是我的代码,请看是否有问题:
服务端的procedure TForm1.ServerSocket1ClientRead(Sender: TObject;
Socket: TCustomWinSocket);
var
ilen:integer;
buf:array of byte;
astr:string;
begin
//接收客户数据
ilen:=Socket.ReceiveLength ;
SetLength(buf,ilen);
Socket.ReceiveBuf(buf,ilen); //此处接收到的最后一位丢失,如客户端发送EDIT1,这里接收EDIT,后面少了个1
Memo1.Lines.add( PChar(buf)) ;
end;
客户端的发送:
procedure TForm1.Button3Click(Sender: TObject);
var
ilen:integer;
buf: array of Byte;
begin
ilen:= Length(edit2.Text) ;
SetLength(buf,ilen);
StrCopy(PChar(buf), PChar(Edit2.Text));
ClientSocket1.Socket.Sendbuf(buf,ilen ) ;
end;
[解决办法]
1.Button3Click
ClientSocket1.Socket.Sendbuf(buf,sizeof(buf)) ;
2.ServerSocket1ClientRead
var
buf:array of byte;
begin
Socket.ReceiveBuf(buf,sizeof(buf));
Memo1.Lines.add( PChar(buf)) ;
end;