Tcp 连接目标机器主动拒绝

Tcp 连接目标机器主动拒绝

我在两台笔记本电脑上安装了一个简单的 TCP 客户端/服务器程序。当我使用“netstat -anb”时,服务器应该可以正常工作,服务器显示正在监听,“0.0.0.0:102”,然后我的客户端连接失败,显示“192.168.10.5:102”。

端口应该匹配,对于服务器 IP 地址,我将其设置为“0.0.0.0”,因此它应该接受任何连接。

当我在一台笔记本电脑上运行该程序时,它运行良好。我很难排除故障。我查了几篇帖子,其中大部分建议将服务器 IP 设置为“0.0.0.0”,我照做了。并且“netstat -anb”显示它正在监听。

连接上的客户端代码

    private void btnConnect_Click(object sender, EventArgs e)
    {
        client = new Socket(AddressFamily.InterNetwork,SocketType.Stream, ProtocolType.Tcp);

        IPAddress ip = Dns.GetHostByName(Dns.GetHostName()).AddressList[0];
        try
        {
            client.Connect(new IPEndPoint(ip, port));
        }
        catch(Exception ex) {
            MessageBox.Show("Connection failed");
            MessageBox.Show(ex.ToString());
            return;
        }
        this.Text = "Connected";
    }

服务器端

    private void btnListen_Click(object sender, EventArgs e)
    {
        Invoke((MethodInvoker)delegate {
            statusLblOne.Text = "Listening..";
            return;
        });

        // establish connection with socket.
        server = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
        server.Bind(new IPEndPoint(0, port));
        server.Listen(0);

        // use <acceptStream> to accept data
        acceptStream = server.Accept();
        txtMessage.Enabled = true;

        // allocate a new thread for this acceptstream
        statusLblOne.Text = "Receiving data...";
        Thread th = new Thread(receiveData);
        th.Start();

        // close the listener socket
        server.Close();
    }

我在原始问题中发布了连接代码。现在真的有点困惑,我在 stackoverflow 上搜索了很多帖子寻求帮助,但大多数帖子都说要么使用不同的端口(0.0.0.0 应该可以),要么服务器没有监听(netstat 显示它正在监听)。我应该如何处理这个问题?我可以提供哪些信息来更好地诊断

相关内容