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 的服务器通信。
我有一个在 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 的服务器通信。