0

又是我,是的。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

4

1 回答 1

0

我知道现在发生了什么。我正在连接到 POP3 服务器 - 在问候消息之后会话处于 AUTHORIZATION 状态,当我必须传递两个命令时:USER并且PASS,如果我没有传递正确的命令,服务器将关闭连接(这就是我得到 IOException 的原因)。唯一不会关闭连接的 3 个命令可能是:USER, PASS, QUIT. 我希望这个线程将来会帮助某人:)

于 2014-07-15T12:18:50.773 回答