三谷と言います。

今、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