在我刚做的一个项目中,使用UDP将各个子节点数据汇总到总中心。当接入的节点少时,通信软件负载能力很好,UDP传输没有发生问题,
当子节点增加到将近20个的时候,发现有丢数现象。
开始以为是Server接点接收的太慢,接收缓冲区太小,但在做了详细的日志分析之后
发现,所有的缓冲区的数据都被读出,没有溢出现象。子节点数据也全被正确打出,没有发生错误!
那么数据到底丢在那里了呢,难道丢在中间的网络传输中?实际数据流最大不超过300K,可是不时有数据丢失。现场环境是:SERVER和下端节点所处的都是100M局域网,SERVER局域网与下端节点局域网之间是10M网,以交换机相连。虽说UDP是不可靠传输,但照理说网络带宽应该不成问题呀!请高手一定帮帮我!
当子节点增加到将近20个的时候,发现有丢数现象。
开始以为是Server接点接收的太慢,接收缓冲区太小,但在做了详细的日志分析之后
发现,所有的缓冲区的数据都被读出,没有溢出现象。子节点数据也全被正确打出,没有发生错误!
那么数据到底丢在那里了呢,难道丢在中间的网络传输中?实际数据流最大不超过300K,可是不时有数据丢失。现场环境是:SERVER和下端节点所处的都是100M局域网,SERVER局域网与下端节点局域网之间是10M网,以交换机相连。虽说UDP是不可靠传输,但照理说网络带宽应该不成问题呀!请高手一定帮帮我!
我把数据包最大设为1024(连同UDP头在内),不足可以,超过的分开传。to yaolan1999(可可猫)
我是用“网络监视器”测的,测到的是所有留经通信服务器的数据,局域网是用交换机连接,每条线路都是100M,数据流量最大的只能是通信服务器。当然,我也查了,排除网络病毒的情况。
if (iRecv > 0)
{
....
}在县城中循环接收,1毫秒接收一次,有数据则把数据打倒处理县城中。接收县城的县城级别被设为THREAD_PRIORITY_TIME_CRITICAL每次接收写有日志,接收速度已经够快了,因为每次最多只接收到一个数据报,没有积压现象。
计算机是多CPU处理,处理能力没问题。
UDP打点,在网络中流通问题好像不是很大!(只要不大到需要分片的程度就好) 但,UDP包,流的太频繁,就容易丢了!