java中实现组播发送过快,接收丢失严重问题
用java中MulticastSocket实现了一个组播接收发送功能,公司内网里,在组播数据量比较大的时候发现发送端发送数据很快,但是接收端接收组播就很不规律,刷新也很慢。后来在发送端每次发送后进行了sleep(0,10),其实我也知道sleep肯定不会这么短,又不是实时操作系统,但是这样做确实能让cpu发送数据减缓。然后接收端就很正常的接收数据了。但是这样做就会使数据进行挤压,发送不及时,我就想到了用多线程来发送这些数据,果然起了两个组播线程之后数据接收正常,数据也没了挤压。
拜托公司大神帮忙用wireshark抓了下包,发现没有sleep的线程里,数据几乎是平均间隔5微秒发送,加了sleep起了两个线程之后,两个数据间隔大约在100微秒左右。
非常奇怪这是什么原因啊?为什么发送端发送过快还会使接收端出问题啊?另外,加sleep这个感觉很不好,有什么比较好的解决方案么?