痔になりやすい生活習慣とは?

はじめまして。
今、C#で非同期通信の勉強をしています。
ためしにローカルネットワーク内で文字を
やり取りするチャットソフトを作成したのですが
このサーバプログラムについて改良を加えたいので
ご協力をお願いいたします。

このサーバプログラムをインターネット上のサーバとする場合なのですが
実験環境ではルータを使用しインターネットに接続しています。

ルータのポート開放等は設定してあります。

プログラムでサーバ自身のローカルIPアドレスと
ポートを作成したソケットにBindすることで
ルータが外部からきた接続要求をアドレス変換し
サーバに届けることはできるのでしょうか?

うまく説明できなくてわかりにくいかと思いますが
よろしくお願いいたします。

このQ&Aに関連する最新のQ&A

A 回答 (2件)

ルータを通して通信する場合、アプリケーション層では、


ルータに接続された外部からの通信に対して、
特定のホストに接続要求させることは不可能だと思います。
(ルータから、特定ホストに全ての通信を中継し、
特定ホストから接続要求を変換する事は可能かもしれませんが)
このための仕組みとして、最近のルータには、
NAT(Network Address Translation)という機能があるわけです。

>ルータのポート開放等は設定してあります。
そもそも、これをしたなら必要ない事だと思うのですが。。。?

この回答への補足

質問の仕方が間違っていたかもしれません。
Bindするときの引数がわからなかったのです。

NATを利用しているのであればサーバのソケットで
バインドするのは自身に割り振られたIPアドレス
(この場合ローカル内のIP)でも問題ないのかなと
思いまして・・・。

わけのわからないことを言ってたらごめんなさい。

補足日時:2007/06/19 11:13
    • good
    • 0

>プログラムでサーバ自身のローカルIPアドレスと


>ポートを作成したソケットにBindすることで
ルーターの外にあるPCから中のPCに接続する為には
ルーターのWAN側のIP、つまりグローバルIPが必要です。
直接ルーターの内側のローカルIPを指定する事は出来ません。

>ルータが外部からきた接続要求をアドレス変換し
>サーバに届けることはできるのでしょうか?
アドレスをどのように変換するかはルーターの仕事です。
ですからルーターの設定次第です。
プログラムは関係ありません。

あと非同期通信ということはUDPでしょうか。
UDPのルーター越えはホールパンチングという手法が有名ですが
一旦ポート番号を保持する外部サーバーが必要になるのと
ルーターの種類によっては使えない場合もあります。

この回答への補足

>あと非同期通信ということはUDPでしょうか。
TCPでの非同期です。

>プログラムは関係ありません。
イメージ的にプログラムがルータのWAN側まで出て行って処理をするのかなと
(雑居ビル内(ローカルネットワーク)の
飲み屋(サーバプログラム)が
来てくれた客(接続要求)をするのに
道(WAN)まででていってるようなイメージ。)

もしくはNATを使っての場合は
(ビルにいる案内員(NAT)
が案内してくれるので飲み屋(サーバプログラム)
は店舗の中で待ってるだけでいいのかな
というイメージ。)

あほうなことを言ってるかもしれません・・・。orz

補足日時:2007/06/19 11:18
    • good
    • 0

このQ&Aに関連する人気のQ&A

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!


人気Q&Aランキング