首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >Java中非阻塞UDP I/O与阻塞UDP I/O的比较

Java中非阻塞UDP I/O与阻塞UDP I/O的比较
EN

Stack Overflow用户
提问于 2009-02-20 13:22:27
回答 2查看 21K关注 0票数 18

NIO中的非阻塞TCP/IP SocketChannelSelector可以帮助我处理大量线程数较少的TCP/IP连接。但是UDP DatagramChannels怎么样呢?(我必须承认我对UDP不是很熟悉。)

即使DatagramChannel未在阻塞模式下运行,UDP send操作似乎也不会阻塞。是否真的存在由于拥塞或类似原因而导致DatagramSocket.send(DatagramPacket)阻塞的情况?我真的很好奇是否有这样的情况,以及在生产环境中可能存在的情况。

如果DatagramSocket.send(DatagramPacket)实际上不阻塞,并且我不打算使用已连接的DatagramSocket并仅绑定到一个端口,那么对DatagramChannelSelector使用非阻塞模式是否没有优势

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2009-02-20 13:48:41

我已经有一段时间没有使用Java的DatagramSockets、Channels和类似的东西了,但我仍然可以给你一些帮助。

UDP协议不像TCP那样建立连接。相反,它只是发送数据,然后忘记它。如果确保数据真正到达那里很重要,那就是客户的责任。因此,即使您处于阻塞模式,您的发送操作也只会在刷新缓冲区所需的时间内阻塞。由于UDP对网络一无所知,因此它会在第一时间将其写出来,而不会检查网络速度或是否实际到达了它应该到达的位置。因此,对于您来说,似乎通道实际上立即准备好进行更多的发送。

票数 17
EN

Stack Overflow用户

发布于 2013-04-10 17:07:12

非阻塞UDP在接收端最有用。分组发送只能由于本地环境而被延迟:本地业务整形工具,如将游戏业务优先于其他业务源的“游戏网卡”,或者过载的网卡(这不太可能发生)可以延迟分组的发送。一旦被排除在系统之外。一旦数据包离开本地接口,它就不再是应用程序关心的问题。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/569555

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档