【发布时间】:2011-11-14 11:06:03
【问题描述】:
我正在使用 Java DatagramSocket 将数据流式传输到多个不同的客户端。由于我自己处理当前注册的客户端列表,我只将套接字绑定到服务器端口,而不连接到任何特定的客户端。
但是,由于不使用 connect(),我失去了 DatagramSocket 对不可达端口的 ICMP 通知做出反应的能力,如果其中一个客户端死亡并且没有机会正确注销服务器。
有什么办法可以恢复这种行为?我曾想过每个客户端使用一个 DatagramSocket,但这似乎不可行,因为它们都必须绑定到服务器上的同一个端口(据我所知,在 UDP 中是不可能的)。
我知道不能保证我的服务器会看到 ICMP 消息,我将实施某种超时机制来处理它,但是对 ICMP 消息做出反应将允许我立即停止向任何主机传输没有运行客户端,这对流式客户端用户来说似乎是一件好事。
【问题讨论】:
标签: java networking udp datagram