0

C#を使用してネットワーク内のリモートシステムに接続しようとしています。次に、プログラムは次の例外をスローします

ターゲットマシンが積極的に拒否したため、接続できませんでした192.168.1.42:8000

private void Start_Sending_Video_Conference(string remote_IP,int port_number)
{
    try
    {
        ms = new MemoryStream();// Store it in Binary Array as 
        pictureBox1.Image.Save(ms,System.Drawing.Imaging.ImageFormat.Jpeg);
        byte[] arrImage = ms.GetBuffer();
        myclient = new TcpClient (remote_IP,port_number);//Connecting with server
        myns = myclient.GetStream ();
        mysw = new BinaryWriter (myns);
        mysw.Write(arrImage);//send the stream to above address
        ms.Flush();
        mysw.Flush();
        myns.Flush();
        ms.Close();
        mysw.Close ();
        myns.Close ();
        myclient.Close ();
    }
    catch (Exception ex)
    {
        Capturing.Enabled = false;
        MessageBox.Show(ex.Message, "Video Conference Error Message", MessageBoxButtons.OK, MessageBoxIcon.Error);
    }
}
4

3 に答える 3

1

通常の容疑者を確認してください:

  1. サーバーアプリケーションは本当に実行されていますか
  2. それは本当にポート8000​​でリッスンしますか?
  3. クライアントコンピューターのファイアウォールは、ポート8000​​での発信トラフィックを許可しますか?
  4. サーバーコンピューターのファイアウォールは、ポート8000​​での着信トラフィックを許可しますか?
于 2012-12-14T09:48:50.783 に答える
0

何かがもう一方の端で聞いていると確信していますか?この場合、ローカルサーバーが実際にリクエストを拒否しているようです。サーバーが実行されていること、TCPServerがリッスンしていること、およびサーバーが実行されているマシン(ローカルの場合は問題ありません)がLANからの着信パケットを許可するように設定されていることを確認してください。

于 2012-12-14T09:05:03.583 に答える
0

上記の解決策が機能しなかった場合、問題はおそらくサーバーコードにあります。TcpListenerのインスタンスを使用して指定されたポートをリッスンした可能性がありますが、コンストラクターに渡したIpAddressはどれですか。次のコードを書いた場合:

mylistener = new TcpListener(IPAddress.Loopback, 8000);

その結果、そのエラーが発生します。これは、ループバックによってリスナーがすべてのネットワークインターフェイスをリッスンするのではなく、ローカルホスト(127.0.0.1)からの要求のみをリッスンするために発生します。

代わりにこのコードを使用してください

mylistener = new TcpListener(IPAddress.Any, 8000);
于 2013-09-27T18:27:16.143 に答える