</File>
TCP接続を受け入れ、マーカーが読み取られるまでデータを読み取り、そのデータをファイルシステムに書き込むアプリケーションに取り組んでいます。切断したくないので、クライアントにデータを送信させて、1つの接続で複数のファイルを送信できるようにします。
アウターループの周りを使用して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);
}