有没有更快的方法来判断客户机是否有可用的数据?我不是说使用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/