我也是。 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

最佳答案

我知道现在发生了什么。我正在连接到POP3服务器-收到问候消息后,会话处于AUTHORIZATION状态,当我必须传递两个命令:USERPASS时,如果我未传递正确的命令,则服务器将关闭连接(这就是为什么获取IOException)。仅有的3个不会关闭连接的命令是:USERPASSQUIT。我希望这个线程将来能对某人有所帮助:)

关于c# - C#SslStream在第二个请求时引发IOException,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/24738553/

10-13 04:15