只是Memo的话,发送完全可以用SendText
用来发送带#0的字符没问题,一般的string类型就可以
接受方,我是这样写的(为了读完)
procedure TfrmMain.ClientRead(Sender: TObject; Socket: TCustomWinSocket);
var p: pchar;
sBuf,sTmp: string;
rcvLen: integer;
begin
p:=nil; sBuf:=''; sTmp:='';
while Socket.ReceiveLength>0 do begin
rcvLen:=Socket.ReceiveLength;
p:=AllocMem(rcvLen);
try
Socket.ReceiveBuf(p^,rcvLen);
SetLength(sTmp,rcvLen);
CopyMemory(@sTmp[1],p,rcvLen)
finally
FreeMem(p);
end;
sBuf:=sBuf+sTmp;
end;
if sBuf='' then exit;
全部接受到的东西就在sBuf里面了
如果发送的东西过长,会出现需要系统自动分多给个包进行发送的问题,要自己管理接收长度等问题