无法建立连接,因为目标计算机主动拒绝它 - 使用Socket或TcpClient

时间:2010-11-12 15:31:16

标签: c# winforms visual-studio-2008 tcpclient

很多人都有同样的问题,但每个人的实施都不同。

我需要帮助实现它。

void sendUsingTcp() 
{
    try 
    {
        Socket sock = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
        IPEndPoint endPoint = new IPEndPoint(IPAddress.Parse(172.16.8.200), 8000);
        sock.Connect(endPoint);
        // code past this never hits because the line above fails
    } 
    catch (SocketException err) 
    {
        MessageBox.Show(err.Message);
    }
}

我还尝试使用相同的错误结果直接尝试TCP客户端:

void sendUsingTcp() 
{
    try 
    {
        using (TcpClient client = new TcpClient()) 
        {
            IPEndPoint endPoint = new IPEndPoint(IPAddress.Parse(172.16.8.200), 8000);
            client.Connect(endPoint);
            // code past this never hits because the line above fails
        }
    } 
    catch (SocketException err) 
    {
        MessageBox.Show(err.Message);
    }
}

我的电脑的IP地址为172.16.11.144

5 个答案:

答案 0 :(得分:5)

事实证明,我的服务器正在侦听来自同一IP的传入连接。我不得不改变它的代码来听取任何IP。

之前和错误:

.form,
button {
padding: 5px;
font-size: 12px;
border: 1px solid black;
box-sizing: border-box;
}

<input type="text" class="form" placeholder="Text" /><button class="button">Click</button>
修复问题后

之后:

IPEndPoint endPoint = new IPEndPoint(IPAddress.Parse(172.16.8.200), 8000);

答案 1 :(得分:3)

i)端口8000很可能用于其他东西。选择另一个(大)数字,看看是否发生了同样的事情 ii)使用环回地址连接到您自己的机器 - IPAddress.Loopback

答案 2 :(得分:2)

您是否检查过以确保远程计算机上的端口8000已打开?如果是这样,它可能是防火墙问题,甚至是网络上的问题。有关远程计算机上运行的内容的更多详细信息将有所帮助。

答案 3 :(得分:1)

通常问题是端口已关闭。没有什么是在另一边听。

答案 4 :(得分:1)

不确定是否可以正确回答,但是您不能使用TCPClient设置侦听器-您需要TCPListener类-https://docs.microsoft.com/en-us/dotnet/api/system.net.sockets.tcplistener?redirectedfrom=MSDN&view=netframework-4.7.2

否则,当TCP握手失败时,您只会得到一个异常。