gpt4 book ai didi

.net - 测试 NetworkStream 是否关闭

转载 作者:行者123 更新时间:2023-12-04 07:10:34 25 4
gpt4 key购买 nike

我有一个类,它包装了一个 Stream 实例,所以我可以用它来包装 FileStreams 和 NetworkStreams。现在,我想测试流是否仍在传递任何数据,换句话说,我想测试 NetworkStream 是否仍然连接或 FileStream 是否已到达终点。

是否有任何函数的返回值可以用来确定下一个 Stream.Read() 是否会导致异常?

提前致谢。

最佳答案

Stream.Read最后不应该抛出异常;它返回一些非正数。我只是 Read(...) 直到我回来 - 即

int read;
while((read = stream.Read(buffer, 0, buffer.Length) > 0) {
// process "read"-many bytes
}

请注意 NetworkStream有一个 DataAvailable - 但这是指 缓冲区 ,而不是流本身(如讨论 here )。我只提这个让你 不要尝试使用它来查看流是否已关闭,因为这不是它的意思。

如果您包装您的 StreamStreamReader ,那么您可以使用 Peek EndOfStream 测试关闭:
bool isEnd = reader.EndOfStream;

或者:
int b = reader.Peek();
if(b < 0) {... was end ...}

关于.net - 测试 NetworkStream 是否关闭,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/450816/

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