C#: 无法连接,目标机器主动拒绝。127.0.0.1:1026

0 投票
2 回答
58 浏览
提问于 2025-04-14 18:21

又来问TCP的问题了 :(

我已经写好了服务器端的监听程序和客户端的发送程序,但我遇到了一个错误:

System.Net.Internals.SocketExceptionFactory.ExtendedSocketException: '无法建立连接,因为目标机器主动拒绝了它。127.0.0.1:1026'

服务器的代码是用Python写的,代码如下:

def StartServer(Host, Port, Log):
    ServerSocket = sockets.socket(sockets.AF_INET, sockets.SOCK_STREAM)
    SererSocket.bind((Host, Port))
    ServerSocket.listen(1)

    Log.log(f"Listening on {Host}:{Port}")
    
    while True:
        ClientSocket, Addr = ServerSocket.accept()
        Data = ClientSocket.recv(1024).decode("utf-8")
        response = "data recieved"
        ClientSocket.send(response.encode("utf-8"))
        ClientSocket.close()

而服务器的代码是用C# (.net6.0)写的,代码如下:

public static void SendData(string serverAddress, int port)
{
    TcpClient client = new(serverAddress, port);

    Console.WriteLine("1");

    NetworkStream stream = client.GetStream();

    Console.WriteLine("2");

    // Send data to server
    string message = "Hello from C# client";
    byte[] data = Encoding.ASCII.GetBytes(message);
    stream.Write(data, 0, data.Length);

    Console.WriteLine("3");

    // Receive response from server
    data = new byte[256];
    int bytes = stream.Read(data, 0, data.Length);
    string responseData = Encoding.ASCII.GetString(data, 0, bytes);
    Console.WriteLine($"Received from server: {responseData}");

    Console.WriteLine("4");

    // Close the connection
    stream.Close();
    client.Close();
}

我把Python服务器绑定到了127.0.0.1:1026(就我所知,这个端口是可用的),但是在创建TCP客户端时,使用“127.0.0.1”,1026时就出现了这个错误。我尝试过关闭两边的防火墙,但还是没有解决。有没有人知道我遇到的问题是什么?

补充:我是在同一个网络连接下的不同机器上运行服务器和客户端,但我打算在后面把客户端换到不同的网络连接上。

2 个回答

0

问题在于你试图从两台不同的电脑上使用127.0.0.1进行连接。

在服务器电脑上运行 hostname 命令,然后用这个名字来连接客户端,而不是用127.0.0.1。

0

这只是我对TCP/IP不太熟悉导致的。我把客户端和服务器的绑定地址从127.0.0.1:1026改成了(我的IP地址):1026,这样就解决了问题。

撰写回答