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

如果上述解决方案不起作用,那么问题可能出在服务器代码中。您可能已经使用了 TcpListener 的实例来监听指定的端口,但是您将哪个 IpAddress 传递给了构造函数?如果你写了以下代码:

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

这将导致该错误。发生这种情况是因为 Loopback 不会让侦听器侦听所有网络接口,而只会侦听来自 localhost (127.0.0.1) 的请求。

请改用此代码

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

你确定有东西在另一端听吗?在这种情况下,您的本地服务器似乎实际上拒绝了该请求。请确认服务器正在运行,TCPServer 正在侦听,并且服务器正在运行的机器(如果它在本地,这应该不是问题)设置为允许来自 LAN 的传入数据包。

于 2012-12-14T09:05:03.583 回答