c#使用Socket.Receive(bytes)大约需要3分钟



我正在使用。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,这意味着没有可用的数据可读,您可以相应地处理这种情况。

最新更新