我有多个客户端连接在 UDP 上。他们的地址被存储以供将来通信。如果一个人死了并且消息被发送给它,那么 recvfrom(2) 会给我 econnreset。有没有办法知道此时哪个同伴死了?
场景看起来像这样
def broadcast message
# one of the clients is dead
clients.each { |x| @socket.send message, 0, x.ip, x.port }
end
def fill_inbox
@inbox << @socket.recvfrom(1000) while IO.select([@socket],nil,nil,0)
rescue Errno::ECONNRESET => e
# who died?
end