c# - 如何在不阻塞的情况下调用 NetworkStream.Read()?

标签 c# sockets networkstream

我想清空套接字的读取缓冲区,所以我编写了以下代码...

byte[] tempBuffer = new byte[1024];
int readCount = 0;
while ((readCount = tcpSocket.GetStream().Read(tempBuffer, 0, tempBuffer.Length)) != 0)
{
    // do with tempBuffer
}

但是 Read() 方法被阻止,所以我添加了 tcpSocket.ReceiveTimeout = 1;。它像以前一样工作。

据我所知,这通常用于 C++。我该如何解决这个问题?

最佳答案

您可以使用 DataAvailable属性以查看在调用 Read 方法之前是否有任何要读取的内容。

关于c# - 如何在不阻塞的情况下调用 NetworkStream.Read()?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1006119/

相关文章:

java - 您可以在不阻止通过同一 java.net.socket 的其他数据的情况下发送图像吗?

c# - 确定类型等价

c# - 为什么这不起作用?实体.CurHP - 实体.RIntDamage

c# - RedirectToAction 开始新 session

c# - NetworkStream:ReadTimeout 及其效果 Read()

c# - 第二次调用 NetworkStream BeginRead() 大量资源争用

c# - 实现极其简单的服务器的最简单方法? (C#)

java - Socket OutputStream::write 方法混合了 TCP 数据包?

c - TCP 套接字是否以与发送数据相同的方式接收数据?

c++ - QT UDP 套接字返回空数据报