socket问题,很简单,有懂的帮忙解决下.(100分)

  • 主题发起人 主题发起人 jack_fang
  • 开始时间 开始时间
J

jack_fang

Unregistered / Unconfirmed
GUEST, unregistred user!
服务器端发来数据,前2字节是标志这个包的大小,我接收端应该怎么写?
procedure TForm1.ClientSocketRead(Sender: TObject;
Socket: TCustomWinSocket);
var
len:word;
buf:array of char;
msg:string;
begin
try
memo1.Lines.Add(inttostr(socket.ReceiveLength));
Socket.ReceiveBuf(len, 2);
memo1.Lines.Add('len:' + inttostr(len));
if len < 1 then Exit;
setlength(buf, len);
Socket.ReceiveBuf(buf[0], len);
setlength(msg, len);
Move(buf[0], msg[1], len);
MemReadMsg.Lines.Add(msg);
except
end;

end;

怎么得到前2个字节
 
没明白你的问题,
ReceiveLength不就是长度吗?
你的代码想要做什么?
 
不知道你是怎么发的。如果是把前2字节和其他内容合并在一起发的话,接受的时候就要一起接收,然后再取出前2个字节。
 
用流接收。把前2个读出。大小还可以做进度条
 
Socket.ReceiveBuf(len, 2);
if len < 1 then Exit;
 
后退
顶部