windows下socket通讯正常,linux下服务器接收不到

mekq   2010-2-8 20:37 楼主
我的一个终端设备使用的linux系统,同远程服务器连接的时候,能连上,但发数据对方收不到,但如果我使用VC模拟的程序(windows程序)连上去就可以正常通讯,两个通讯都设置的阻塞模拟,但windows的可以,linux不行,会是什么问题呢?(确定socket是阻塞的,每次通讯的数据有1K多,windows实用网线,终端使用网线和GPRS都不行)

回复评论 (6)

不会,帮顶下。

MARK.
点赞  2010-2-8 20:58
能正常通信,说明终端应该是没有什么问题的。至于为什么在WIN下可以而LINUX不可以,你可以看一下是不是LINUX的SOCKET套接字的创建是否有错误,可以这样来试,一是写日志,看有没有创建出现什么异常。二是你直接写一个模拟程序完全在LINUX下的,然后再对照你的程序,进行最小化测试,即只进行通信测试,能接收数据就可以了。这样你就会一步步的调通。不要着急,这应该是小BUG。估计肯定是哪儿的配置什么的写错了。或者哪儿有一个小异常没有控制住。
点赞  2010-2-9 13:52
搞明白了,应该linux的close()断开socket的信号,对方没有收到!
点赞  2010-2-9 13:53
那就查一下LINUX下的通讯有什么问题呗。如果还是找不到,不要用终端 了直接用WINDOWS的机器写个SOCKET。
点赞  2010-2-9 22:16
这种情况不好判断,得试试各种方式调试,排除法
点赞  2010-2-9 22:31
谢谢各位大侠,问题找到了,close之前需要调用shutdown,之后等待几秒就能保证把数据发送出去,之前没有shutdown,所以不行!
点赞  2010-3-22 10:21
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 京公网安备 11010802033920号
    写回复