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

Mina使用UDP时丢包严重,急```
客户端起了10个线程,每个线程发送10个数据包(自定义的,有头,有长度,有内容,已测试单包发送没问题)

服务端接收数据包,结果发现丢包一半以上 

- -!

尝试在 messageRecevied 方法中不错任何事情(减少处理时间,只是简单 println 语句) 仍然没有 10*10 的结果

如果客户端是 100*1 ,一百个线程,每个发一条,丢包更严重

如果客户端是 10*5 ,5个线程,每个发10条,结果不丢包...

求解释.....


------解决方案--------------------
估计网络环境不好。

要想不丢包那就用 TCP
------解决方案--------------------
线程……Windows下一个线程默认占1M空间……UDP不保证数据完整性
------解决方案--------------------
这个。。。
聊天记录又不是啥核心内容
可以忍受一定量的丢包
不过丢包这高估计是网络不好
先把网络环境弄好再说吧
探讨
引用:

估计网络环境不好。

要想不丢包那就用 TCP


因为项目是要存储游戏玩家的聊天记录,基本都是文本信息,数据总量大,但单个数据包小,而且客户端并发度高,用 UDP 会比 TCP 好吧...

------解决方案--------------------
很明显,发送频率太高,被路由器或者网关或者网卡丢弃了

处理办法是:使用独立的线程,每发送一次,休息一会儿,而且还要保证数据包格式大小的合法性,格式不正确或者太长太短都会被丢弃不处理
------解决方案--------------------
一 发送以后加点延时。
二 不要发较大的包。