Mina使用UDP时丢包严重,急```

sharkdoodoo 2011-03-14 10:05:36
客户端起了10个线程,每个线程发送10个数据包(自定义的,有头,有长度,有内容,已测试单包发送没问题)

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

- -!

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

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

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

求解释.....
...全文
666 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复
还是TCP比较好用
sharkdoodoo 2011-10-22
  • 打赏
  • 举报
回复
嗯,这个可以试试。
gzhongxin 2011-10-20
  • 打赏
  • 举报
回复
可能跟你的 bufferSize 有关,你调整一下 ReadBufferSize、ReceiveBufferSize和SendBufferSize 这些参数 。 如果缓冲区满的话,收到的UDP包会丢弃。
Steven725 2011-07-04
  • 打赏
  • 举报
回复
这是正常现象,主要原因是UDP没有流量控制,也不具有滑动窗口协议,如果发送端发送频率过高,会淹没接收端。接收端缓存不够就会导致丢包,其实数据包压根还没传送到MINA那一层,在操作系统内核层就丢掉了。因此不论你如何优化,精简MINA的处理,只要发送频率过快,还是会有丢包问题,除非在应用层对每个包编号,并自实现超时重发(类似TFTP协议)。
Coolfatman 2011-03-15
  • 打赏
  • 举报
回复
一 发送以后加点延时。
二 不要发较大的包。
0轰隆隆0 2011-03-15
  • 打赏
  • 举报
回复
很明显,发送频率太高,被路由器或者网关或者网卡丢弃了

处理办法是:使用独立的线程,每发送一次,休息一会儿,而且还要保证数据包格式大小的合法性,格式不正确或者太长太短都会被丢弃不处理
yaoweijq 2011-03-15
  • 打赏
  • 举报
回复
这个。。。
聊天记录又不是啥核心内容
可以忍受一定量的丢包
不过丢包这高估计是网络不好
先把网络环境弄好再说吧
[Quote=引用 3 楼 longshao_feng 的回复:]
引用 1 楼 bao110908 的回复:

估计网络环境不好。

要想不丢包那就用 TCP


因为项目是要存储游戏玩家的聊天记录,基本都是文本信息,数据总量大,但单个数据包小,而且客户端并发度高,用 UDP 会比 TCP 好吧...
[/Quote]
sharkdoodoo 2011-03-15
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 bao110908 的回复:]

估计网络环境不好。

要想不丢包那就用 TCP
[/Quote]

因为项目是要存储游戏玩家的聊天记录,基本都是文本信息,数据总量大,但单个数据包小,而且客户端并发度高,用 UDP 会比 TCP 好吧...
Nodin 2011-03-14
  • 打赏
  • 举报
回复
线程……Windows下一个线程默认占1M空间……UDP不保证数据完整性
  • 打赏
  • 举报
回复
估计网络环境不好。

要想不丢包那就用 TCP

62,614

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧