0

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クライアントを実行します.....何も起こりません...#動作しません


何か案は?

ありがとう。

4

0 に答える 0