From: Tetsuo Sakaguchi Date: 2007-08-01T18:41:25+09:00 Subject: [ruby-list:43771] Re: UDP通信時のエラー検出 In message <407af920708010215n6cb6a4a7o32a164da7d0b6901@mail.gmail.com> 2007-08-01T18:15+0900, 中田雅美 wrote: > 私の期待している「ポートが閉じているときにエラー」にはならないようです。 ポートが閉じている(というかそのポートでlistenしているプロセスがない) と相手からは ICMP PORT_UNREACHABLE が帰ってきます。 そこで、次に送信しようとすると、神戸さんが書かれた > > また、connect(2)したUDPのソケットだと、ICMPのport unreachable等が返っ > > てきた場合に、次の送信の処理でエラーを返してくれます。 が期待できるというわけです。 もっとも私も Ruby のライブラリについては良く知らないので、 > > 繰り返しますが、以上はシステムコールのレベルの話で、RubyのSocketライブ > > ラリでどのように扱われているかはわかりません。 というのは同じです。 (一応ドキュメントを見る限りでは UDPSocket とは別に「低レベル」な実装 の Socket クラスもあるようですが、、。) 個人的には、「通信相手のポート番号が使われているか否か」を確かめる ことが本当に必要なのかどうか(相手にUDPデータグラム送って一定時間内に 返事のデータグラムがなければ、、、という通常のアプローチでは だめなのか)、という検討をまずした方が良さそうな気もしますけど、、。 -- 阪口哲男@図書館情報メディア研究科.大学院.筑波大学 Tetsuo SAKAGUCHI. Graduate School of Library, Information and Media Studies University of Tsukuba, JAPAN.