■75245 / inTopicNo.1) |
TcpListenerでNAT越え? |
□投稿者/ あおい (1回)-(2015/03/08(Sun) 21:33:42)
|
分類:[C#]
C#とういうよりネットワークかもしれません。
ソケット通信でTCPを利用してプログラムを書いています。 ローカル内ではサーバ側でリスナー(TcpListenerクラス)を利用して待機させ、 クライント側ではサーバ側のIPとポートを指定して接続(TcpClientクラスやSocketクラス)すると思います。 これをWAN(ルータ)を挟んで通信してみたいのですが、どうすればいいでしょうか? 具体的には、クライント側のTcpListenerクラスにグローバルIPアドレスを入力して接続しようとしているのですが、エラーになります。 TcpClient client = new System.Net.Sockets.TcpClient( サーバのグローバルIPアドレス, ポート番号 ); ← グローバルIPを入れると、接続拒否されましたと叱られます(標準ではルータを超えられないからですよね?) ルータを越えるために何かしらテクニックが必要だと思うのですが、ここをどうすれば良いか知りたいです。
とりあえず環境としては、 PC → ルータ → インターネット → ルータ → PC のような感じです。 (多重ルータは難しいそうなので、とりあえず1個でお願いします。) http://tu3.jp/0980 上のサイトのUPnPライブラリを利用して、サーバ側でポートマッピングし、特定のポートで待機させています。 また、クライント側はサーバ側が使用するポートを知っているものとしてください。
よろしくお願いします。
|
|