listener.AcceptTcpClient() 在 c# 中不起作用,在 Java 中起作用

listener.AcceptTcpClient() doesn't work in c# and works in Java

我有一个在 Java 中实现的套接字侦听器应用程序,并且工作正常

C#代码:

        IPAddress serverAddress = IPAddress.Parse("127.0.0.1");
        TcpListener listener = new TcpListener(serverAddress, 1234);
        listener.Start();

        while (true)
        {
            TcpClient client = listener.AcceptTcpClient();

            NetworkStream stream = client.GetStream();
            byte[] data = new byte[client.ReceiveBufferSize];
            int bytesRead = stream.Read(data, 0, Convert.ToInt32(client.ReceiveBufferSize));
            string request = Encoding.ASCII.GetString(data, 0, bytesRead);
            Console.WriteLine(request);
        }

白色在Java中工作正常:

ServerSocket server = new ServerSocket(1234);
Socket socket = server.accept();

在 java 中,一个新的客户端连接开始了,我设法读取了数据。在 C# 中,它根本没有创建任何 TcpClient。

请帮忙!

尝试用这个替换您的 TcpLister 初始化:

TcpListener listener = new TcpListener(IPAddress.Any, 1234);

当您使用“127.0.0.1”时,您将服务器套接字绑定到环回地址。只有同一台机器上的客户端才能与使用环回 IP 的服务器通信。