如何使用socket.senbbuf 和receivebuf(100求教) ( 积分: 100 )

  • 主题发起人 主题发起人 59305
  • 开始时间 开始时间
5

59305

Unregistered / Unconfirmed
GUEST, unregistred user!
我用tcpclient编写一个向已知的sever发送信息,我想用sendbuf将memo中一行东西发送出去,然后用receivebuf接收sever发送回来的反馈信息,并显示memo上,如何做到啊!
 
我用tcpclient编写一个向已知的sever发送信息,我想用sendbuf将memo中一行东西发送出去,然后用receivebuf接收sever发送回来的反馈信息,并显示memo上,如何做到啊!
 
只是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里面了
如果发送的东西过长,会出现需要系统自动分多给个包进行发送的问题,要自己管理接收长度等问题
 
我用了你的方法,但是用memo.lines.add(sbuf)没有显示接收的结果啊,我发送到server端是这样一组数据 1234,121,df12861233,123.23,edgdg
回来的数据是 1234,121,df12861233,123.23,99,edgdg
从sever上观察由于使用sengtext,所以尾巴带有回车换行符,所以我想用sendbuf的方法来做做看
 
应该不会这样的
你取client的memo的时候直接用Text属性,不要用Lines属性加起来,加起来的当然没有#13#10
 
能否给个用sendbuf的代码我试试看,谢过了,先给分了
 
后退
顶部