udp客户端 Java_UDP响应未到达客户端

有什么建议,我们如何在更长的时间内保持套接字存活?

有没有办法设置UDP超时设置...?

UDP是无连接的 . 如果应用程序绑定到UDP服务器套接字并侦听,它可以等待消息无限期到达 .

另一方面是无法在协议/套接字级别检测丢失的UDP消息 . 如果一台机器向另一台机器发送UDP消息,则第一台机器无法直接知道消息是否已到达?没有传输级别超时来告诉发件人重新传输 .

如果您需要可靠性,超时,自动重传等,则最好使用基于连接的传输协议,例如TCP .

根据同事建议的问题,如果在一段时间内没有活动,防火墙可能会关闭UDP连接,因为通信是可靠的,需要实现超时探测 .

从表面上看,这种解释是荒谬的 . UDP是无连接的,因此没有连接关闭或保持活动状态 .

真正的解释可能是以下之一:

UDP请求或UDP回复被一台或另一台机器上的防火墙软件或网络中的某个地方阻止 .

关于发送或接收消息的方式有些不对 .

您正在尝试通过NAT网关发送UDP消息;例如到无法从另一个路由到IP地址的计算机 . 需要特殊措施(例如UDP hole punching)才能将UDP流量传送到NATed主机,并且可能需要发送保持活动数据包以防止"UDP hole"超时 .

如果您尝试从Java通过NAT防火墙发送UDP,则可以使用各种(第三方)Java库来执行此操作 . 与“java”和“udp”一起搜索“stun”和“turn”或“ice”,或者阅读以下内容:

这些解决方案都要求您采取措施“刷新”NAT绑定以保持防火墙“漏洞”打开 .

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值