我正在使用
这样StreamWriter
的实例化Tcpstream
streamWriter = new StreamWriter(tcpClient.GetStream());
我对以下关于异常的调用的行为感到困惑。以下两个函数预计会引发IOException
令人惊讶IOException
的是,当连接的服务器tcpClient
断开连接并因此底层 TCP 客户端连接中断时,它们不会引发。这两行执行时不会引发任何异常。为什么 ?
streamWriter.WriteLine(strBuffer);
streamWriter.Flush();
编辑:除了专家的回复之外,这篇特别的帖子也帮助我理解了原因。 http://social.msdn.microsoft.com/Forums/sk/netfxnetcom/thread/b177a935-7430-4812-9555-f747748df1af 本质上,当调用 StreamWriter 的 WriteLine 时会调用 NetworkStream.Write,这会写入输出缓冲并返回,没有阻塞,除非缓冲区已满。操作系统维护的内部缓冲区包含未发送的数据,操作系统将继续尝试发送,直到给定次数的尝试失败。WriteLine 将抛出 IOException 但不一定每次都抛出..