三谷と言います。
今、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