我正在尝试实现自己的NNTP客户端(目前是一个控制台程序)。 My Connection类继承自TcpClient,并具有以下代码:
Connect(hostname, port);
NetworkStream stream = GetStream();
StreamReader reader = new StreamReader(stream);
try
{
while (!reader.EndOfStream)
{
r = reader.ReadLine();
Console.WriteLine(r);
}
}
catch (IOException ioe)
{
Console.WriteLine(ioe.Message);
}
catch (Exception e)
{
Console.WriteLine(e.Message);
}
当我运行这段代码或对其进行调试时,它会从NNTP服务器输出欢迎消息,但只要再次执行ReadLine就会挂起。应该没有来自服务器的更多数据,但EndOfStream为false。
我决定放弃StreamReader,最后得到以下内容:
Connect(hostname, port);
NetworkStream stream = GetStream();
try
{
int ch;
while ((ch = stream.ReadByte()) != -1)
{
Console.WriteLine((char) ch);
}
}
catch (IOException ioe)
{
Console.WriteLine(ioe.Message);
}
catch (Exception e)
{
Console.WriteLine(e.Message);
}
与第一个示例一样,ReadByte从不返回-1,代码似乎挂起。
没有抛出异常,程序就不会退出。有谁知道为什么会这样,或者我做错了什么?
谢谢!