c# 退出 NetworkStream.read()

问题描述 投票:0回答:2

我创建了一个 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(),但在收到任何数据之前没有任何作用。预先感谢!

c# sockets networking tcp stream
2个回答
2
投票

尝试使用:

stream.ReadTimeOut = 600000; 

以毫秒为单位。


0
投票

如果您不想使用超时, 你可以通过以下方式停止阅读:

TCPSocket.Client.Disconnect(false);

我发现避免读取异常的唯一方法。

© www.soinside.com 2019 - 2024. All rights reserved.