From: Toru MITANI Date: 2003-02-07T21:36:30+09:00 Subject: [ruby-list:37065] UDPから受信出来ない。 三谷と言います。 今、rubyの勉強がてらUDP/IPを使用したクライアントプログラムを作っているの ですが、サーバーに対し、メッセージは送信出来るのですが、サーバーからのメッ セージが受信出来ません。 OSは、WindowsXP HOME、Rubyはcygwinの1.8.6を使用しています。 $ ruby -v ruby 1.6.8 (2002-12-24) [i386-cygwin] ちなみに、サーバーもWindowsXP HOMEです。 リファレンスマニュアルを見ても分かりませんので、どなたか教えて頂けないで しょうか? 現在、発生しているエラーは ./ServerConnect.rb:30:in `recvfrom' Invalid argument - "recvfrom(2)" ./ServerConnect.rb:30:in `connect' Invalid argument - "recvfrom(2)" ./ServerConnect.rb:30:in `loop' Invalid argument - "recvfrom(2)" ./ServerConnect.rb:30:in `connect' Invalid argument - "recvfrom(2)" ./ServerConnect.rb:45 Invalid argument - "recvfrom(2)" です。なんか、recvfromメソッドの引数が誤っている。と怒っているようですが 解決方法が分かりません。 ソースを以下に記述します。 #!/usr/local/bin/ruby require "socket" =begin RoboCupシュミレーションリーグのサーバーに接続するクラス =end class ServerConnect @address = nil @port = nil @socket = nil MSG_SIZE = 1024 =begin サーバーに接続する。 =end def connect(address, port, termName) if address==nil then raise "サーバー名、IPアドレスが不正です" end if port<1 then reise "ポート番号が不正です" end @address = address @port = port @socket = UDPSocket.new begin @socket.send("(init #{termName})", 0, @address, @port) loop { packet, addr = @socket.recvfrom(512) print "'#{addr}'\n" print "'#{packet}'\n" } rescue $@.each { |err| print "#{err} #{$!}\n" } @socket.close end end end # server = ServerConnect.new "192.168.10.2", "10" server = ServerConnect.new server.connect("localhost", 6000, "test") -- 三谷 徹 E-Mail : toru@mitani.homeip.net