C#SslStream在第二个请求时抛出IOException

时间:2014-07-14 14:12:21

标签: c# ssl tcp pop3 sslstream

我也是,是的。 5分钟的编码= 1天试图修复代码。这是我的代码,它抛出IOException(无法从流中读取)仅在第二个请求,第一个正常工作。我bytes = sslStream.Read(buffer, 0, buffer.Length);会抛出异常,我试图解决这个问题但没有结果。

以下是请求功能的代码:

public void SendRequest(string request)
{
    byte[] buffer = new byte[2048];
    int bytes = -1;
    StringBuilder message = new StringBuilder() ;

    sslStream.Write(Encoding.ASCII.GetBytes(request + "\r\n"));
    do
    {
        try
        {
            bytes = sslStream.Read(buffer, 0, buffer.Length);
            message.Append(Encoding.ASCII.GetString(buffer, 0, bytes));
        }
        catch (Exception)
        {
            throw;
        }

    } while(!message.ToString().Contains("\n"));
    Console.WriteLine(message);
}

代码调用SendRequest()函数:

while((request = Console.ReadLine().ToLower()) != "exit")
{
    con.SendRequest(request);
}

如果您想要完整代码,请在此处查看:GitHub Repo

1 个答案:

答案 0 :(得分:0)

我知道现在发生了什么。我正在连接到POP3服务器 - 在问候消息后会话处于AUTHORIZATION状态,当我必须传递两个命令:USERPASS时,如果我没有传递正确的命令,服务器关闭连接(这就是我获得IOException的原因)。只有3个命令没有关闭连接:USERPASSQUIT。我希望这个帖子将来会帮助某人:)