我也不确定提供什么来帮助诊断此错误。在Visual Studio 2019中完成调试。
我有一个非常简单的服务器设置,可以将HTTP标头响应发送到客户端连接。这是单个客户端操作。
在我的循环中:
while (this._running) {
TcpClient client = server.acceptTcpClient(); // hangs here
// more stuff later on
在等待客户端连接(设置TcpListener之后)后,我的绞线挂在了acceptTcpClients上。如果我在该行上放置一个断点,然后在调试中运行,程序将流动,命中该行,然后被阻塞直到发生连接。然后,我要么使用浏览器并连接该端口(或使用诸如postman之类的东西),程序就会看到连接,处理请求,关闭客户端并等待新的连接。其他一切工作都很好。当我有断点时,它始终有效。
如果我不设置一个断点,并且只运行服务器的构建版本,或者仅在简单的调试模式下运行,则永远无法一致连接到该服务器。我要么要发送一堆请求
即发送请求,挂起,取消,重新发送,挂起,取消,重新发送(接收!)响应。
或在第一次尝试时收到响应,或者它从不连接。它们始终都是相同的请求,以确保一致性。
服务器的设置方式:
IPEndPoint port = new IPEndPoint(this.ip,this.port);
server = new TcpListener(port);
// Start listening for client requests.
server.Start();
this._running = true;
while (this._running) {
TcpClient client = server.acceptTcpClient(); // hangs here
// more code that is never usually reached after a client connets