日期:2014-05-20  浏览次数:20687 次

TCP / IP数据包接收出现中断,接收不到数据
最近做的项目遇到一个问题,不知道原因出在哪,希望哪个熟悉的人给解答一下。
项目是一个通过TCP/IP协议进行网络数据包传送,前端有个下位机进行数据采集,每一个下位机分配一个IP地址。发送数据包到IP为10...,端口为4000的服务器。服务器端的上位机软件接收数据包,并解析、处理。


现在遇到一个问题,就是上位机软件在接收数据包的时候,过段时间会出现部分前端的下位机发送过来的数据包接收不到。然后我在服务器端,主动去ping接收不到数据包的下位机,显示:第一次ping  连接超时。之后就会显示连接正常



网络状况是采用局域网,网络不是很稳定,偶尔会出现网络中断。
网络 上位机 下位机 数据包

------解决方案--------------------
链路都端了,数据包不恢复是正常的。你是用Socket发包的话,Socket在accept以后就建立了一个链路,网端了以后这个链路就没有了,当然就接不到包了,所以你要对网络不稳定的情况进行处理,2楼说的UDP是一个办法,就是发出去就完事,你也不管接没接到,但是我觉得最好的办法是,你可以写个Timer,网络断开以后Socket会抛异常,你可以在Client端捕获这个异常,然后定时去建立连接,比如10分钟一次,当再次建立上的时候,再继续发数据。如果数据量大的话,你还要判断,是不是数据发到一半异常了,做个断线重发的机制。