【发布时间】:2015-02-23 23:23:43
【问题描述】:
我有一个与服务器通信的客户端,下面的代码应该在控制台上打印输入的内容 - 这跨越多行。
问题是它显示所有行,然后引发异常。
我尝试了不同的方法来使其正常工作,例如 peek() 这会导致最后一行被切断并引发相同的异常。
我有什么遗漏吗?
using (sr)
{
try
{
while (!sr.EndOfStream)
{
Console.WriteLine(sr.ReadLine());
}
}
finally
{
sr.Close();
}
}
异常是:System.IO.IOException: Unable to read data from the transport connection: 连接尝试失败,因为连接方在之后没有正确响应 一段时间,或建立连接失败,因为连接的主机没有响应。
我在using (sr) 之前使用过.ReadTimeout 和.WriteTimeout
【问题讨论】:
-
旁注:如果有 using 块,则不需要 try/finally/close。
-
请检查这是否与您的问题无关:stackoverflow.com/questions/1450263/…
-
sr分配的其余部分在哪里?它应该都在 using 语句中(请参阅 msdn.microsoft.com/en-us/library/yh598w02.aspx 了解using最佳实践) -
那么你设置了什么超时?向我们展示整个代码块。我假设网络条件实际上导致您的读取未完成,就像异常所说的那样。
标签: c# sockets streamreader