0
Rubyのネットワークサービス。以下は私のコードの関連部分です:'オンラインは誰ですか?'私は「オンライン誰を?」書きたいいくつかの組み込みLinuxシステムを持っているRubyのネットワークプログラム
mySocket = UDPSocket.new
mySocket.bind("<broadcast>", 50050)
loop do
begin
text, sender = mySocket.recvfrom(1024)
puts text
if text =~ /KNOCK KNOCK/ then
begin
sock = UDPSocket.open
sock.send(r.ipaddress, 0, sender[3], 50051)
sock.close
rescue
retry
end
end
rescue Exception => inLoopEx
puts inLoopEx.message
puts inLoopEx.backtrace.inspect
retry
end
end
私は 'KNOCK KNOCK'コマンドをPCから送信します。さて、問題は、それら全てが同時にメッセージを受信するので、彼らは(私の「レスキューリトライ」コードの理由で)壊れたパイプ例外が発生した、あまりにも同時に対応しようとしています。このコードは時々OKですが、 (sock.sendからブロークンパイプ例外によりウェークされる)コードの他の時間レスキュー再試行部は、1つ以上のシステムは、5秒ほど後に応答させます。
私は壊れたパイプの例外を逃れるカントと仮定するので、これを行うための良い方法はありますか?