我正在使用。net 6.0,最近使用int numBytes = client.Receive(bytes);
已经花了大约3分钟。Socket变量称为client
。此问题3天前没有发生。
我使用的完整代码是:
string data = "";
byte[] bytes = new byte[2048];
client = httpServer.Accept();
// Read inbound connection data
while (true)
{
int numBytes = client.Receive(bytes); // Taking about 3 minutes here
data += Encoding.ASCII.GetString(bytes, 0, numBytes);
if (data.IndexOf("rn") > -1 || data == "")
{
break;
}
}
时间也不总是一致的。有时(很少)可以瞬间完成,有时可能需要3分钟到1小时。
我已经尝试了以下操作:
- 重新启动我的电脑 <
- 改变网络/gh>
- 关闭防火墙
- 在其他计算机上尝试
- 尝试在另一台计算机上关闭防火墙
- 使用有线和无线连接然而,这些都不起作用,反而导致了同样的问题。我期望发生的事情和过去发生的事情是,它将正常地继续通过代码,而不是长时间挂在一行代码上。
您可以使用client.Poll()
方法在调用client.Receive()
之前检查是否可以从套接字读取数据。
如果client.Poll()
返回false,这意味着没有可用的数据可读,您可以相应地处理这种情况。