有没有更快的方法来判断客户机是否有可用的数据?我不是说使用tcpclient很慢。有,但我很想知道这是不是最快的方法。

最佳答案

TCPClient.available本身并不慢,它只是取决于您如何使用它。
如果你只是用它来检查是否有可用的数据,那么这就是前进的道路。
如果在循环中使用它来等待数据,程序的整体性能将非常糟糕。下面是一个坏用法:

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

对于第二个场景,您可以使用以下任一种方法来实现您想要的:
异步读取(查看NetworkStream.BeginRead)=>最可扩展
阻塞读取(看看提议的here解决方案,它利用NetworkStream.Read

关于c# - TcpClient.Available优化,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/8730121/

10-10 07:20