Kur*_*Lin 0 java ubuntu networking operating-system udp
我正在我的机器A和B上运行实验,两者都安装了Ubuntu Server 11.04.A和B连接到相同的1000M/bps开关.
A是发件人:
while(total <= 10,000)send_udp_datagramPacket(新字节[100])到B
B是接收者:
while(true)receive()
但最后我在B的收入不到10,000(约合9960).为什么会这样?丢失的数据包在哪里?他们实际上没有被送到开关的电线吗?或者开关丢失了?或者他们确实到了B,但B的操作系统丢弃了它们?或者他们到达了Java,但是Java因为一个完整的缓冲区而把它们扔掉了?
任何回复将不胜感激.
请记住,UDP不提供可靠的通信,它适用于可接受数据丢失的情况(例如流媒体).很可能这是一个缓冲区溢出(我的猜测,不要依赖它)但重点是,如果这个数据丢失是不可接受的,请改用TCP.
如果这只是为了实验,请尝试Thread.sleep()
在循环中添加delay()并增加它,直到获得最大接收数据包.
编辑:正如评论中所提到的,sleep()不是一个修复程序,最终会丢失数据包...这只是UDP.
归档时间: |
|
查看次数: |
1119 次 |
最近记录: |