gpt4 book ai didi

c# - StreamReader.EndOfStream产生IOException

转载 作者:行者123 更新时间:2023-12-03 12:06:50 35 4
gpt4 key购买 nike

我正在开发一个接受TCP连接并读取数据的应用程序,直到读取</File>标记,然后将该数据写入文件系统。我不想断开连接,我想让客户端发送数据来做到这一点,以便他们可以在一个连接中发送多个文件。

我在外部循环中使用了StreamReader.EndOfStream,但是当客户端断开连接时,它将引发IOException。有一个更好的方法吗?

private static void RecieveAsyncStream(IAsyncResult ar)
{
TcpListener listener = (TcpListener)ar.AsyncState;
TcpClient client = listener.EndAcceptTcpClient(ar);

// init the streams
NetworkStream netStream = client.GetStream();
StreamReader streamReader = new StreamReader(netStream);
StreamWriter streamWriter = new StreamWriter(netStream);

while (!streamReader.EndOfStream) // throws IOException
{
string file= "";
while (file!= "</File>" && !streamReader.EndOfStream)
{
file += streamReader.ReadLine();
}
// write file to filesystem
}
listener.BeginAcceptTcpClient(RecieveAsyncStream, listener);
}

最佳答案

我将其放在try-catch块中。这样,当引发异常时,您可以检查它以及它是否是通常在超时时发生的IOException;或连接超时(即发件人不见了),并以最适合您需求的方式处理。

关于c# - StreamReader.EndOfStream产生IOException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3066404/

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