使用TCP客户端建立连接时出错

时间:2012-12-14 09:00:38

标签: c# sockets c#-4.0 tcpclient socketexception

我正在尝试使用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);
    }
}

3 个答案:

答案 0 :(得分:1)

请检查通常的嫌疑人:

  1. 服务器应用程序是否真正运行
  2. 它真的在端口8000上听吗?
  3. 客户端计算机上的防火墙是否允许端口8000上的传出流量?
  4. 服务器计算机上的防火墙是否允许端口8000上的传入流量?

答案 1 :(得分:0)

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

答案 2 :(得分:0)

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

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

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

请改用此代码

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