找回密码
 加入
搜索
查看: 2098|回复: 2

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

[复制链接]
发表于 2011-5-21 22:39:40 | 显示全部楼层 |阅读模式
本帖最后由 xtanxin 于 2011-5-28 00:53 编辑

TCPSEND的发送数量是72个字节,用StringLen查看接收是68个字节
改变发送内容的长度,也是少4个.
 楼主| 发表于 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个字节,也就是只有“你”。

成了自问自答了.刚刚没有注意这个资料.
 楼主| 发表于 2011-5-21 22:52:05 | 显示全部楼层
一点小经验,
在发送的时候使用.StringToBinary 函数,转换发送就可以.接收的时候不需要处理.

不过,转换成二进制多了4个字节,如:72个字节,发送就成了76了.不过,接收是72个.
您需要登录后才可以回帖 登录 | 加入

本版积分规则

QQ|手机版|小黑屋|AUTOIT CN ( 鲁ICP备19019924号-1 )谷歌 百度

GMT+8, 2024-10-2 03:29 , Processed in 0.075391 second(s), 20 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表