ホーム ネットワークに 2 台の Windows コンピューターがあり、テスト中のクライアント/サーバー TCP 接続を介して通信できないようです。
これは、Windows Server 2008 ボックスで実行している単純な Ruby サーバーです。
require 'socket'
server = TCPServer.open(2000)
puts "Server started"
loop {
client = server.accept
client.puts "Hello client"
client.close
}
puts "Server stopped"
これは、Windows 7 ボックスで実行している単純なクライアントです。
require 'socket'
hostname='192.168.1.10'
port=2000
s = TCPSocket.open(hostname, port)
while line = s.gets
puts line.chop
end
s.close
サーバーの実行中にクライアントを実行すると、次のエラーが表示されます。
client.rb:6:in `initialize': 接続先が一定時間後に適切に応答しなかったために接続試行が失敗したか、接続されたホストが応答しなかったために確立された接続が失敗しました。- connect(2) (Errno::ETIMEDOUT)
サーバーのファイアウォールにポート 2000 の例外を作成して、すべてのデバイスが接続できるようにしました (ファイアウォールを完全にオフにしてみました)。
サーバーと同じボックスからクライアントを実行すると、正常に接続を確立できるため、コード自体も問題ないと思います。
ネットワーク接続をブロックしているものがあると思いますが、ネットワークの問題のトラブルシューティングに精通していないので、どこから始めればよいでしょうか?