gpt4 book ai didi

c# - 确保 streamreader 不会挂起等待数据

转载 作者:行者123 更新时间:2023-11-30 17:24:31 25 4
gpt4 key购买 nike

下面的代码从 tcp 客户端流中读取所有要读取的内容,并且在下一次迭代中,它将只停留在 Read() 上(我假设正在等待数据)。我如何确保它不会在没有任何内容可读时返回?我是否必须设置低超时,并在失败时响应异常?或者有更好的方法吗?

TcpClient tcpclnt = new TcpClient();
tcpclnt.Connect(ip, port);

Stream stm = tcpclnt.GetStream();

stm.Write(cmdBuffer, 0, cmdBuffer.Length);

byte[] response = new Byte[2048];

MemoryStream ms = new MemoryStream();
byte[] buffer = new Byte[2048];
int length;
while ((length = stm.Read(buffer, 0, buffer.Length)) > 0)
ms.Write(buffer, 0, length);

byte[] response = ms.ToArray();


tcpclnt.Close();

最佳答案

TcpClient 有两个我会玩的属性。

  1. NoDelay 获取或设置一个值,该值在发送或接收缓冲区未满时禁用延迟。
  2. ReceiveTimeout 获取或设置 TcpClient 在启动读取操作后等待接收数据的时间

关于c# - 确保 streamreader 不会挂起等待数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/835549/

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