socket传送数据格式求解(100)

  • 主题发起人 主题发起人 zylsoft
  • 开始时间 开始时间
Z

zylsoft

Unregistered / Unconfirmed
GUEST, unregistred user!
服务端数据类型定义:类型名称:WORD 对应标准C语言类型:unsigned short字节数:2DElphi IdTCPClient 做客户端,数值定义FACTORY:WORD;....sub.FACTORY:=4; //赋值....传送过去,服务端接收到是1024 服务端解释是:word,长度是2,不足补0x00(字符结束符)怎么赋值才能解决问题
 
你程序是不是运行在两个不同的系统上(大头在前或者小头在前),或者顺序处理不对。估计是字节顺序颠倒过来了。00000000 00000100 = 400000100 00000000 = 1024
 
服务端只收到一个字节,值为4,然后补8位,导致的?要不你发送的代码贴出来。
 
ufo说的是原理.我补充些内容吧做网络传输时,多字节(16位整数,32位整数)的数字类型需要做转换才能接收正常.uses WinSock;32位整数:Integer, Cardinal发送前 htonl接收后 ntohl16位整数:Word, Smallint发送前 htons接收后 ntohs类似的定义在indy中也有,如果要编写跨平台程序时,注意uses indy相关的单元.
 
多人接受答案了。
 
后退
顶部