gpt4 book ai didi

c# - 防止 TcpClient 的 NetworkStream ReadTimeout 关闭套接字

转载 作者:可可西里 更新时间:2023-11-01 02:37:31 25 4
gpt4 key购买 nike

我有一个类通过 TCP 与设备通信。我发送命令,然后在 TcpClient 的 GetStream() 上发出 stream.Read(reply, 0, 1)。我读出每个字节,然后将读取的字节组合成一个字符串,并将该字符串与终止字符串进行比较,让我知道何时停止读取。

设备软件存在一些缺陷,导致终止字符串并不总是发送。我想以适当的方式处理这个问题,并用一段时间来确定是否应该停止读取。

如果我将 stream.ReadTimeout 设置为 -1 以外的值,那么当超过此超时时套接字将关闭,这是我不希望的到。

如果我将 stream.BeginRead(..)stream.ReadTimeout = -1 一起使用,那么我将在一段时间后吸干线程池。

可以构建什么智能解决方案来解决这个问题?

最佳答案

你可以检查 stream.DataAvailable()

如果stram中有可用数据:读取它,将读取的字节组合成一个字符串,并将该字符串与终止字符串进行比较。

如果没有终止字符串,设置超时(你可以使用线程)并等待任何传入数据,如果没有新传入数据,则将 ReadTimeout 设置为 1,否则读取新数据。

关于c# - 防止 TcpClient 的 NetworkStream ReadTimeout 关闭套接字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11013951/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com