From: kjana@... (YANAGAWA Kazuhisa) Date: 2000-09-10T23:02:25+09:00 Subject: [ruby-list:24909] Re: UDPSocket $B$NAw?.85%]!<%HHV9f$N;XDj(B In message <39BB6B5A2DA.2E38HIROSHISAITO@smtp.e-mail.ne.jp> HiroshiSaito@pob.org writes: > ロボットから送信したパケットに対する返信は送信元ポートへ送られてしま > うので少なくともポート番号が判っていないと返信を受け取れないのです。 UDP は一つのソケットで送受信できるんだから,送信したソケットで recvfrom すればすむ話のような気がするんですが,何か見落としてます? # recvfrom の戻り値は [msg, [addressfamily, port, hostname, IP addr]]? > > ないのであれば,普通はソースポートがプロセス毎に異なるように, > > システム側で空きポート割り振ってもらうようにします. > > そうですか、普通はそうするものなんですね。 そのための INADDR_ANY.... # bind しなくても動くけど.した方が行儀がいいのかな. -- 柳川和久 @ 東大阪市 . 大阪府 September 10, 2000 アリオッチ,アリオッチ,血と魂を御身に捧ぐ! # server require "socket" sock = UDPSocket.new sock.bind("localhost", 12345) msg, addr = sock.recvfrom(16) puts msg, addr sock.send(msg, 0, addr[2], addr[1].to_i) # client require "socket" sock = UDPSocket.new sock.send("hello", 0, "localhost", 12345) msg, host, port = sock.recvfrom(16) puts msg, host, port