2

私はチュートリアル@ http://www.geekpedia.com/tutorial239_Csharp-Chat-Part-1---Building-the-Chat-Client.htmlに従って、ネットワーキングの基本を試して収集しています。ジャンプをしたくない人のために、これは単純なクライアント サーバー モデルのチャット アプリケーションをプログラムする方法を示す簡単なチュートリアルです。

tutでコードを実行しようとすると、クライアントとサーバーの両方が同じネットワーク上にある限り正常に動作しますが、2回目は外部で実行しようとします(クライアントアプリを実行するための仲間を取得し、サーバーアプリは私の側です)、それはすべてポットに行きます. 同じネットワーク内でコードが機能するという事実から、これはコーディングの問題ではなく、ネットワークの設定方法に問題があると思われます。

開いたポート 21719 の IP アドレスでサーバーを実行しようとしていますが、それでも他の人は私のサーバーに接続できず、まったく応答を得ることができません。

サーバーが接続をリッスンするために使用されているコード (tut から) は次のとおりです。

public void StartListening()
        {


            IPAddress ipaLocal = ipAddress; //ipAddress is parsed from txtIP


            tlsClient = new TcpListener(ipaLocal, 21719);


            tlsClient.Start();


            ServRunning = true; //for the running loop

            // Start the new tread that hosts the listener
            thrListener = new Thread(KeepListening);
            thrListener.Start();
        }

さて、チュートリアルでは実際に IPAddress ipaLocal = ipAddress; と指摘しています。

一部の構成で問題が発生する可能性があり、私の構成がそれに含まれる可能性があるのではないかと心配し始めています。

それで、誰かが私に解決策を持っていますか?

ありがとう、サム

4

3 に答える 3

1

使用しているローカルIPアドレスは何ですか?(ipAddress)127.0.0.1の場合、それは正しくありません(内部的にもどのように機能するかはわかりませんが、Windowsは時々魔法を使用しているようです)。また、ローカルマシンに複数のNICがある場合、ポート転送はそのうちの1つにのみ転送するように設定されており、もう1つのIPを使用していますか?

それが問題ではない場合、ここにいくつかの一般的な提案があります:

  1. netcatのコピーを入手してください。これは小さなネットワークテストユーティリティであり、その唯一の仕事は単純なTCP接続を形成することです。これにより、コードを変数として排除することができます。netcatが接続を形成できる場合、問題はコードにあることがわかります。そうでない場合は、それがルーターであることを確認しています。

  2. WireShark(またはTShark)を使用してICMPパケットを探すことができます。リモートマシンでICMPパケットをキャプチャします。ルーターから「DestinationUnreachable」を取得した場合は、それがルーターであることを再度証明しています。

スペンサーが言ったように、ポート21719で着信するすべてのパケットを内部マシンに転送するには、ルーターでポート転送が設定されていることを確認する必要があります。正確な方法については、ルーターの種類がわからないとわかりません。

于 2009-09-10T02:20:53.970 に答える
0

いくつかのヒント:

  1. 使用しているオペレーティング システムの種類は何ですか? ファイアウォール ルールのスコープおよび/またはプロファイル ([詳細設定] タブの下) を確認してください。
  2. あなたの友人がポートに telnet で接続 (im サーバーに接続) しようとしている間、WiresharkまたはNetwork Monitorを使用してトラフィックを監視します(Wireshark は Vista と Win 7 で問題があります)。マシンに何もヒットしていない場合、問題はおそらくルーター側にあります。設定を再確認してください - 転送ルール (NAT) を設定したと言いましたが、ルーターのファイアウォールにもルールを設定しましたか?
于 2009-09-09T10:45:44.220 に答える
0

外部 (インターネット) IP アドレスを他のユーザーに使用させていますか? (こちらを参照してください。)
ポート 21719 からサーバーにすべての通信を転送するようにルーターをピンホールしましたか?

于 2009-09-05T23:12:30.810 に答える