C# 无法建立连接,因为目标计算机使用套接字或TcpClient主动拒绝连接

C# 无法建立连接,因为目标计算机使用套接字或TcpClient主动拒绝连接,c#,winforms,visual-studio-2008,tcpclient,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)

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

我需要帮助我实现它

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

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

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

通常问题是端口关闭。另一端没有任何内容正在侦听。

对我来说,我的服务器只侦听来自同一IP的传入连接。我必须更改代码,以便它从任何IP进行侦听

之前和错误:

IPEndPoint endPoint = new IPEndPoint(IPAddress.Parse(172.16.8.200), 8000);
在问题修复后

IPEndPoint endPoint = new IPEndPoint(IPAddress.Any, 8000);

不确定是否正确回答了此问题,但您不能使用TCPClient设置侦听器-您需要一个TCPListener类-


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

172.16.8.200
8000
端口上似乎没有任何内容在侦听。你真的启动了服务器进程吗?你能在端口8000上远程登录到172.16.8.200吗?
>telnet 172.16.8.200
会让我得到登录提示。这就是我的代码失败的原因吗?因为我没有登录凭据?否则,有关如何在端口8000上准确连接到telnet的信息会很有帮助。如果我正确理解telnet,那就是TCP连接。您需要有一个目标计算机来答复要求登录的请求。从你的问题来看,现在发生的事情似乎还没有开始。Telnet如果发现同样的问题,可能会抛出一条snotty错误消息。我正要问目标机器上的端口8000正在侦听什么我有一个我在服务器上编写的应用程序,该应用程序正在积极侦听端口8000。如果你知道如何检查,我想知道。cmd
netstat-anb
你就是这样检查的。Tom,我的应用程序安装在大约50台不同的工作电脑上,它们都试图在端口8000上与同一台服务器通信。这会导致问题吗?如果是的话,我该怎么解决呢?啊。我误解了你最初的问题。我只有少量使用.Net tcp连接的经验。您可以修改服务器代码吗?我假设您正在使用
TCPListener
来接收连接;启动时,请尝试调用
Start(int)
,明确告诉它允许的最大连接数。该死的重载。如果代码在测试场景中编译并运行良好,我永远不会考虑其他实现。标记为答案。出于好奇,您确认问题的解决方案了吗?也就是说,验证它是否由于上述原因没有执行您希望它执行的操作,并更改它以修复问题?如果是这样的话,我会有点惊讶,因为我(naievely)会假设默认行为(即您正在使用的无参数重载)是在主机爆炸之前一直接受新连接。不,它没有。但是,如果我从未收到决议,我会将最有帮助的回答标记为我的答案。这鼓励其他人提供建议。谢谢,肯。TCPListener已安装在服务器上。7岁的问题。我甚至不再在那家公司工作了