xtanxin 发表于 2011-5-21 22:39:40

[已解决] TCPSend发送字符数正常,TCPRecv接收后少4个字符,那位知道怎么回事?

本帖最后由 xtanxin 于 2011-5-28 00:53 编辑

TCPSEND的发送数量是72个字节,用StringLen查看接收是68个字节
改变发送内容的长度,也是少4个.

xtanxin 发表于 2011-5-21 22:41:15

调用TCPSend发送数据时,AutoIt实际会在其内部 调用Ws2_32.send函数,如果发送的数据是文本字符串,那么在调用Ws2_32.send函数之前,AutoIt会先计算字符串的长度,注意这里的“字符串长度”,AutoIt内部会计算成字符数量,而不是字符串所占用的字节长度,而Ws2_32.send函数需要的是“字节长度”。比如发送“你好”,这个字符串所占用的字节数量是4(因为1个全角字符占用2个字节),可是AutoIt内部却将2(字符数量)传递给了send函数,所以实际被 复制进发送缓存区中的只有前2个字节,也就是只有“你”。

成了自问自答了.刚刚没有注意这个资料.

xtanxin 发表于 2011-5-21 22:52:05

一点小经验,
在发送的时候使用.StringToBinary 函数,转换发送就可以.接收的时候不需要处理.

不过,转换成二进制多了4个字节,如:72个字节,发送就成了76了.不过,接收是72个.
页: [1]
查看完整版本: [已解决] TCPSend发送字符数正常,TCPRecv接收后少4个字符,那位知道怎么回事?