我创建了一个 TCP 侦听器来从端口接收数据。我创建了一个 NetworkStream 来读取即将到来的数据。
NetworkStream stream = new NetworkStream(TCPSocket);
Byte[] bytes = new Byte[128];
int i;
while ((i = stream.Read(bytes, 0, bytes.Length)) != 0)
{
string msg = System.Text.Encoding.ASCII.GetString(bytes, 0, i);
Console.WriteLine("received: {0}", msg);
}
我想做的是,如果10分钟没有数据到来,我想关闭流。我怎样才能做到这一点?我尝试使用计时器创建一个线程在一段时间后调用stream.close(),但在收到任何数据之前没有任何作用。预先感谢!
尝试使用:
stream.ReadTimeOut = 600000;
以毫秒为单位。
如果您不想使用超时, 你可以通过以下方式停止阅读:
TCPSocket.Client.Disconnect(false);
我发现避免读取异常的唯一方法。