急!!!winSock如何发送和接收record结构的数据(100)

  • 主题发起人 主题发起人 dai_wei
  • 开始时间 开始时间
D

dai_wei

Unregistered / Unconfirmed
GUEST, unregistred user!
有哪位高人知道在Delphi中winSock如何发送和接收record结构的数据,如有例子可否贴出来.谢谢.
 
简单的在服务端用特别符号(如"|")间隔各个字段的值以组成字符串,在客户端再重新组合正规的使用服务端:var r:trect;r.left:=1111;//...Socket.SendBuf(r,sizeof(trect)); 客户端var r:trect; socket.ReceiveBuf(r,SizeOf(trect));
 
to 枝上柳绵 你提供的这个是控件的方式实现,我想需要用winSock的方式来进行发送. 另外用特别符号来分格,始终不是一种好的方法.[:)]
 
要不把结构型数据存成表格数据再处理。
 
最好是先发送长度,再分块发送数据,因为有的数据太大,一次不一定发完!呵呵!例如:const sendsz=2048; var ct,len,time,lastb:integer;begin len:=nnnnn; time:=len div sendsz; // 一共发送几次! lastb:=len-time*sendsz; // 剩余字节! Socket.SendBuf(len,sizeof(integer)); for ct:=1 to time do Socket.SendBuf(buf[(ct-1)*sendsz]{buf从0开始,从1开始+1即可},sendsz); if lastb>0 then Socket.SendBuf(buf[(ct-1)*sendsz],lastb); end;
 
用socket发送record的时候,要注意record的长度. 即 sizeof(record)的问题.最好是直接定义 packed Record
 
后退
顶部