2

2つのアプリケーションがあります。1つはサーバーアプリで、もう1つはクライアントアプリです。サーバーアプリは接続をリッスンしてから、接続されているすべてのクライアントにメッセージを送信します。

これまでのところ、私のテストはすべて同じマシンで両方のアプリケーションを実行することによって行われており、これは正常に機能しています。今、私はあるマシンで実行されているサーバーと別のマシンで実行されているクライアントをテストしようとしています。

これらの各マシンは、私自身のホームネットワーク内にあります。そのネットワークは、ファイアウォールを備えたルーターの背後にあります。私が読んだことから、私の問題は、ルーターに設定されていないポート転送に関係している可能性があります。それはありそうですか?

これは私のコードだけで修正できるものですか?本当にすべてのユーザーにファイアウォールのポートを手動で開くように要求する必要がありますか?サーバーに接続し、ファイアウォールのポートを開く必要のない他の多くの商用アプリケーションを使用しました。それらのアプリケーションと私のものの違いは何ですか?

それからまた、多分私はここで間違った木を吠えています。たぶん、私のコードがこの状況で機能するのを妨げる他の問題がありますか?

役立つ可能性のあるコードスニペットを提供することはできますが、どこから探し始めるかわからないため、ソリューション全体を投稿したくありません:)

前もって感謝します

4

1 に答える 1

3

ローカル マシン以外からの接続を受け入れるには、0.0.0.0 (簡易バージョン) にバインドする必要があります。127.0.0.1 にバインドしていないことを確認しましたか?

0.0.0.0 にバインドすると、実際には現在のホストの現在お​​よび将来のすべてのアドレスにバインドされるため、どこからでも接続を受け入れることができます。ネットワーク インターフェイスの 1 つのアドレスだけにバインドすることもできます。

于 2012-10-14T20:26:49.570 に答える