0

boost::asio チュートリアル:同期クライアント同期サーバー(C++)を使用して、同じネットワーク内にあるデスクトップ PC とラップトップ (ワイヤレス接続を使用する後者) の間の基本的な通信をセットアップしようとしています。

サーバーとクライアントの両方を同じマシンで (パラメーターとして localhost と datetime ポートを使用して) 実行すると、うまく動作します。しかし、ラップトップをサーバーとしてセットアップしようとすると (netstat -anbコマンド プロンプトからテストしたところ、想定どおりに実際に実行され、ポート 13 をリッスンし、問題が発生しないことを確認するためにファイアウォールを非アクティブ化しました)。 )、試したIP(ローカルホスト、および基本的にipconfig -all私に与えられたすべてのIP)に関係なく、クライアント(PCでセットアップ)で接続できません。

そのため、何を試しても、クライアントがサーバーに接続するために使用できる正しいアドレスが見つかりません。誰か助けてくれませんか?

4

1 に答える 1

1

問題は、プログラムではなく、ホーム ネットワークにある可能性が高いです。

PC とラップトップの両方が同じルーター (イーサネット経由の PC とワイヤレス経由のラップトップ) に接続されていると仮定すると、いずれかのマシンで生成されたトラフィックは最初にルーターに送信されます。このトラフィックがルーターに到達すると、おそらくネットワーク アドレス変換 ( NAT ) が実行され、トラフィックがインターネットに送信されます。この場合、クライアントからのリクエストは、より大きなインターネットに送信されている可能性があります (リクエストを送信している内部 IP アドレスが見つからない/指定されたポートで期待するサービスを実行していない)。ローカル ネットワークで実行されているサーバーに転送されます。

この仮説をテストするには、サーバーが実行されている IP アドレス/ポート番号を使用して、クライアントからtracerouteを実行します。ルートが 3 つ以上のホップを通過する場合 (インターン クライアント -> ルーター -> 内部サーバー)、より大きなインターネットに送信されます。この場合、特定の IP / ポートを持つトラフィックが大規模なインターネットではなく内部サーバーに転送されるように、ルーターを構成できる場合があります (ポート転送を調べてください)。

于 2013-07-01T23:25:57.197 に答える