我正在尝试实现我自己的 NNTP 客户端(目前是一个控制台程序)。我的 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 为假。
我决定放弃 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,并且代码似乎挂起。
没有抛出异常,程序只是不退出。有谁知道为什么会这样,或者我做错了什么?
谢谢!