WebSocket serverSocket.Accept() 不触发

WebSocket serverSocket.Accept() doesn't trigger

我正在尝试在 C# 控制台应用程序中使用同步 WebSocket 将 strings 发送到服务器。以下代码在 127.0.0.1 上完美运行,但在我尝试过的任何真实服务器上都不起作用。我得到的结果是客户端连接到 IP/Port 并发送 strings 没有错误,但是当 _clientSocket.Connect(_IP, _PORT); 被调用时 _serverSocket.Accept(); 永远不会触发。

此外,如果未调用 serverSocket.Bind(new IPEndPoint(IPAddress.Any, _PORT));,则发送方在尝试连接时会收到错误消息(如预期)。所以看起来它应该可以工作并且端口也可以工作。

我试过使用各种服务器。下面示例代码中的那个取自 https://server.pro/

所以,问题是,为什么 _serverSocket.Accept(); 没有触发,因为发件人可以连接并发送 strings 而没有错误?

private static Socket _serverSocket, _clientSocket;
private const int _PORT = 40288;
//this IP doesn't work, but 127.0.0.1 works flawlessly
private static IPAddress _IP = IPAddress.Parse("37.187.143.226"); 

//---------sender (client) code---------
_clientSocket = new Socket(AddressFamily.InterNetwork, SocketType.Stream,
    ProtocolType.Tcp);
//connects, no errors appear
_clientSocket.Connect(IPAddress.Parse(_IP), _PORT);

//sends strings to the server, no errors appear
while (true) { 
    Console.Write("Enter text to send: ");
    string input = Console.ReadLine();
    _clientSocket.Send(Encoding.ASCII.GetBytes(input));
    Console.WriteLine("Sent!");
}

//-------listener (server) code--------     
_serverSocket = new Socket(AddressFamily.InterNetwork, SocketType.Stream,
    ProtocolType.Tcp);
_serverSocket.Bind(new IPEndPoint(IPAddress.Any, _PORT)); 
_serverSocket.Listen(10);
Console.WriteLine("Waiting for a client socket to connect");    
_clientSocket = _serverSocket.Accept(); //never triggers
Console.WriteLine("Socket accepted, waiting for data...");

服务器代码必须 运行 在您要连接的机器上。那就是 IP 为 37.187.143.226 的机器。

所以要么 运行 一切都在本地并使用目标 IP "localhost" 要么 运行 另一个盒子上的服务器并使用 37 IP。

另请注意,防火墙和路由器通常必须配置为允许访问。