0

単純なエコークライアントサーバー(クライアントとサーバーに別々のリンクがあります)にBOOST -ASIOを使用しています。サーバーを実行しようとすると、これを使用しますasync_tcp_echo_server 4000。私が使用するクライアントの場合blocking_tcp_echo_client #.#.#.# 4000(IPアドレスとして#。#。#。#を使用)。私はXP-SP3を使用しており、コンピューターをUSBカードを使用してワイヤレスDSLモデムに接続しています。クライアント側で数秒後、次のエラーが発生します。

Exception: connect: A connection attempt failed because the connected party did
not properly respond after a period of time, or established connection failed be
cause connected host has failed to respond

それが何であるかについて何か考えはありますか?Windowsファイアウォールを含むファイアウォールをオフにしましたが、それでも応答がありません。ポートが正しくない範囲にある可能性がありますか?ネットワーク上のマシンを指定するためにコンピューター名を含める必要がありますか(ネットワーク上に他のマシンがアクティブな場合があります)?私はこれをDSLモデムに直接接続されている別のコンピューターで実行してみましたが、同じ問題が発生しました。私は自分のアドレスにpingを実行しましたが、それは4/4パケットで機能しました。

4

2 に答える 2

1

さまざまな問題になる可能性があります。netcatしたがって、サーバー上のポートにサービスを提供するなど、低レベルのネットワークツールを使用 しnetcatて、クライアント側から接続してみる価値があります。これは、アプリケーションのネットワークプログラミングコードによって引き起こされる潜在的な問題を取り除くことにより、問題を単純化するのに役立ちます。問題がネットワークの問題であると特定された場合は、次の点を確認してください。

  • サーバーのファイアウォール例外を確認します。
  • サーバーのネットワークゲートウェイでファイアウォールの例外を確認します。
  • サーバーとクライアントが異なるネットワーク上にあり、クライアントがサーバーの外部IPに接続しようとしている場合は、サーバーのゲートウェイがサーバーにルーティングするトラフィックを認識していることを確認します。これには、ルーティングデバイスでポート転送などのルールを設定する必要がある場合があります。
  • サーバーとクライアントが同じネットワーク上にあるが、クライアントがネットワークの外部IPを介してサーバーに接続しようとしている場合は、ゲートウェイが外部IP宛ての内部トラフィックのループバックをサポートしていることを確認します。
  • Wiresharkなどのネットワークアナライザツールを使用して、パケットの存続時間が廃棄されないように十分に長いことを確認します。
于 2013-02-23T03:01:39.623 に答える
1

あなたは試すことができます

$ telnet server-ip 4000

クライアントから送信し、tcp接続を確立できるかどうかを確認します。

于 2013-02-23T02:28:26.467 に答える