TcpClient Networkstream:30秒空闲后,DataAvailable始终为false

时间:2015-03-31 14:09:35

标签: tcpclient networkstream seconds

我已连接到条码阅读器,该阅读器具有以太网IP地址并使用以下(简化)代码:

using (TcpClient client = new TcpClient("192.168.20.41", 1002))
{
    using (NetworkStream stream = client.GetStream())
    {
        while (true)
        {
            int readCount;
            byte[] data = new byte[client.ReceiveBufferSize];

            while (stream.DataAvailable && (readCount = stream.Read(data, 0, client.ReceiveBufferSize)) != 0)
            {
                value += Encoding.UTF8.GetString(data, 0, readCount);
            }

            if (!string.IsNullOrWhiteSpace(value) && value.EndsWith(endOfLine))
            {
                OnRead(value);
                value = "";
            }

            //Thread.Sleep(200);
        }
    }
}

当我启动我的测试应用程序并扫描一些条形码工作正常时,我可以根据需要进行多次扫描。现在,当我闲置至少30秒然后扫描条形码然后stream.DataAvailable保持false,client.Available保持0,但client.Connected仍然是true。当我重新启动我的应用程序时,它再次工作,直到我再次闲置30秒。

我是否需要保持客户端或流存活?我该怎么做?

提前致谢。

0 个答案:

没有答案