socket 传送记录类型数据问题,在线等待。。。答对即送(100分)

  • 主题发起人 主题发起人 syy_sxd
  • 开始时间 开始时间
S

syy_sxd

Unregistered / Unconfirmed
GUEST, unregistred user!
socket客户端
TSendInfo=record
data1:int;
data2:int64;
data3:string[6];
end;
sendrecord:TSendInfo;
sendrecord.data1:=1;
sendrecord.data2:=2;
sendrecord.data3:='HLJ4';
ClientSocket.Socket.SendBuf(SendRecord,sizeof(sendrecord));
socket服务器端
buf:array[0..300] of char;
socket..ReceiveBuf(buf,socket..ReceiveLength);
而buf的内容是
buf=('#1,#0,#0,#0,,#2,#0,#0,#0,#0,#4,'H','L','J','4',#0,#0')
这里的#4,是HLJ4的长度吧,怎么能让接受的缓冲里的'#4',不要发送到服务器端呢
请指教
 
string[0]表示字符串的长度
我觉得你还是不要用STRING[6]这样的形式,直接用字符数组得了
 
你的接受端是C程序吧!

TSendInfo=record
data1:int;
data2:int64;
data3:Array [1..6] of Char;
end;
sendrecord:TSendInfo;
begin
fillchar(SendRecord,sizeof(sendrecord),0);
sendrecord.data1:=1;
sendrecord.data2:=2;
move(String('HLJ4')[1],sendrecord.data3,4{串长度});
ClientSocket.Socket.SendBuf(SendRecord,sizeof(sendrecord));
end;

搞定!
 
对,别用string[]
用array of char
否则,shortstring肯定要存储字符创长度的
 
后退
顶部