有没有更快的方法来判断客户端是否有可用的数据?我并不是说使用TcpClient.Available很慢,但我很想知道它是否是最快的方式。
答案 0 :(得分:2)
TcpClient.Available本身并不慢,它只取决于你如何使用它。
如果你只是用它来检查是否有可用数据,那么就可以了。
如果您在循环中使用它以等待数据,程序的整体性能将非常糟糕。这是一个不好的用法:
public void Receive()
{
while (tcpClient.Connected)
{
if (tcpClient.Available >= 0)
{
// Do something
}
}
}
对于第二种情况,您可以使用以下方法实现所需:
答案 1 :(得分:1)
如果您只需知道是否有可用的数据,并且您不打算对数据做任何事情,那么它可能是最快的方法。
但是,如果您正在轮询以确定是否有任何内容要读取,那么请使用异步I / O:启动异步读取操作(BeginRead),一旦任何数据到达,您将被调用以处理它。这比轮询更快(也更有效),看看是否有一些数据。