c#-TcpClient.可用的优化

有没有更快的方法来判断客户端是否有可用数据?我并不是说使用TcpClient.Available很慢,但是我很好奇它是否是最快的方法.

解决方法:

TcpClient.Available本身并不慢,它仅取决于您如何使用它.

如果仅通过联动方式使用它来检查是否有可用数据,则这是一种方法.

如果在循环中使用它以等待数据,则程序的整体性能将非常差.这是这种不良用法之一:

public void Receive()
{
    while (tcpClient.Connected)
    {
        if (tcpClient.Available >= 0)
        {
            // Do something
        }
    }
}

对于第二种情况,您可以使用以下两种方法之一实现所需的功能:

>异步读取(看NetworkStream.BeginRead)=>最具扩展性
>阻止读取(查看建议的解决方案here,它使用了NetworkStream.Read)

上一篇:CodeGo.net> TcpClient(IPEndPoint localEP),选择正确的localEp?


下一篇:c#-TCPClient异常的新实例