从NNTP服务器读取时,流不响应

时间:2017-06-11 21:15:01

标签: c# readline networkstream nntp

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

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

谢谢!

0 个答案:

没有答案