有没有更快的方法来判断客户端是否有可用数据?我并不是说使用TcpClient.Available很慢,但是我很好奇它是否是最快的方法.
解决方法:
TcpClient.Available本身并不慢,它仅取决于您如何使用它.
如果仅通过联动方式使用它来检查是否有可用数据,则这是一种方法.
如果在循环中使用它以等待数据,则程序的整体性能将非常差.这是这种不良用法之一:
public void Receive()
{
while (tcpClient.Connected)
{
if (tcpClient.Available >= 0)
{
// Do something
}
}
}
对于第二种情况,您可以使用以下两种方法之一实现所需的功能:
>异步读取(看NetworkStream.BeginRead)=>最具扩展性
>阻止读取(查看建议的解决方案here,它使用了NetworkStream.Read)