You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

为何此PowerShell TCP流读取循环无法终止?

问题原因解析

首先得搞懂$stream.Read()方法的返回值到底代表什么:它返回的是本次调用实际读取到的字节数量,不是读取到的字节内容。

  • 当你发送0字符时,这个字符会被转换成1个字节(比如ASCII编码下是0x30),Read()会成功读取这1个字节,返回值是1,自然不等于0,循环会继续运行。
  • 当你发送空字符串""时,实际上没有任何字节被发送到套接字流里。对于TCP流来说,Read()方法在没有数据可读时会一直阻塞等待,直到有数据过来或者连接被关闭,所以此时它不会返回0,循环也不会终止。

只有当发送端主动关闭了套接字的输出流(比如调用了套接字的Close()方法,或者Shutdown(Send)操作),接收端的Read()方法才会返回0,表示流已经结束,没有更多数据可以读取,这时候循环才会终止。

内容的提问来源于stack exchange,提问作者TMOTTM

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.10 08:30:59