我正在开发一个接受 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);
}