0

我正在尝试实现我自己的 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,并且代码似乎挂起。

没有抛出异常,程序只是不退出。有谁知道为什么会这样,或者我做错了什么?

谢谢!

4

0 回答 0