客户端起了10个线程,每个线程发送10个数据包(自定义的,有头,有长度,有内容,已测试单包发送没问题)
服务端接收数据包,结果发现丢包一半以上
- -!
尝试在 messageRecevied 方法中不错任何事情(减少处理时间,只是简单 println 语句) 仍然没有 10*10 的结果
如果客户端是 100*1 ,一百个线程,每个发一条,丢包更严重
如果客户端是 10*5 ,5个线程,每个发10条,结果不丢包...
求解释.....
很明显,发送频率太高,被路由器或者网关或者网卡丢弃了
处理办法是:使用独立的线程,每发送一次,休息一会儿,而且还要保证数据包格式大小的合法性,格式不正确或者太长太短都会被丢弃不处理线程……Windows下一个线程默认占1M空间……UDP不保证数据完整性一 发送以后加点延时。
二 不要发较大的包。
估计网络环境不好。
要想不丢包那就用 TCP这个。。。
聊天记录又不是啥核心内容
可以忍受一定量的丢包
不过丢包这高估计是网络不好
先把网络环境弄好再说吧