【问题标题】:C# SslStream throws IOException on second requestC# SslStream 在第二次请求时抛出 IOException
【发布时间】:2014-07-14 14:12:20
【问题描述】:

再说一遍,是的。 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

【问题讨论】:

  • sslStream 定义在哪里?
  • SendRequest() 函数在同一个类(TcpConnector)中,我在类的构造函数中与它连接(它运行良好)。
  • @Endy 也许请求超时了?
  • 我正在调试它,在这里发布是我做的最后一件事,我也试过谷歌它,修复,调试。异常说:无法从传输连接中读取数据。其余的不是英文,但类似于:“连接已被计算机主机上安装的软件关闭”。
  • 很抱歉没有发布完整的异常,但我认为每个 IOException 的描述都是相同的:D

标签: c# ssl tcp pop3 sslstream


【解决方案1】:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-10-19
    • 1970-01-01
    • 1970-01-01
    • 2015-10-05
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多