no-ipを介して単純なRubyクライアントサーバー(ソケット)に接続しようとしています
コード: > サーバー
#!/usr/bin/ruby
require 'socket'
puts "Server run..."
server = TCPServer.new('',5000)
while (session = server.accept)
Thread.start do
session.puts "ok"
session.close
end
end
コード: > クライアント
#!/usr/bin/env ruby
require 'socket'
clientSession = TCPSocket.new( "xxx.xxx.xxx.xxx.", 5000)
while !(clientSession.closed?) && (serverMessage = clientSession.gets)
if serverMessage =~/ok/
puts "connect"
end
end
接続:
グラフの説明
PC1 : ポート 5000 で実行されている Ruby サーバー
PC2 : Ruby クライアント実行中
ROUTER : 接続を PC1 (サーバー) ポート 5000にリダイレクトするためのマッピング
NO-IP : 接続をパブリック IP (ルーター) ポート 5000にリダイレクトするように構成されています
VPN : WANからの接続をシミュレートするスウェーデンの IP
*両方の PC がローカル ネットワーク上にある
最初のテスト(緑の矢印) // no-ip のないクライアントサーバー
パブリック IP とポート 5000 を使用してクライアントを構成する
TCPSocket.new( "xxx.xxx.xxx.xxx.", 5000)
PC2クライアントを実行する=> VPN に接続する= > ROUTER に接続する=> PC1 (サーバー)にリダイレクトする=> PC1が「 OK」と応答する=> 同じ方法で戻る => PC2 に「接続する」 # work
2 番目のテスト(青い矢印) //クライアントなしでブラウザからno-ipをテスト
これが私の no-ip アドレスだとします: test.no-ip.org
PC2ブラウザからtest.no-ip.orgを開く=> VPNに接続する= > NO-IPに接続する = > ROUTERに接続する=> PC1 (サーバー)にリダイレクトする=> PC1が「 OK」と応答する=>同じ方法を取るback =>ブラウザに「ok」を入力し、 xxx.xxx.xxx.xxxの test.no-ip-orgを変更します。:5000 #仕事
3 番目のテスト(赤い矢印) // no-ip のクライアントサーバー
no-ip でクライアントを構成する
TCPSocket.new ("test.no-ip.org", 80)
PC2クライアントを実行します.....何も起こりません...#動作しません
何か案は?
ありがとう。