繁体   English   中英

从SslStream读取内容

[英]Read contents from SslStream

我有一个应用程序,通过该应用程序,我可以使用以下命令执行IMAP命令:

  • TcpClient连接到IMAP服务器
  • SslStream写入和读取命令

问题:

  • 无法从流中读取完整的输出内容
  • SslStream.Read上的while循环似乎不起作用
  • StreamReader.ReadLineReadToEndRead方法不起作用

样例代码:

while ((l = reader.ReadLine()) != null)
{
    output.AppendLine(l);
}

此代码段将读取1到2行,并挂在reader.Readline()

我尝试设置ReadTimeout属性的解决方法:

try
{
    _output=new byte[_tcpclient.ReceiveBufferSize];
    _sslstream.Read(_output, 0, _output.Length);
    textBox1.Text = Encoding.ASCII.GetString(_output);
}
catch (IOException ex)
{
    textBox1.Text ="ERROR !! " + ex.Message;                
}

救命:

  • 如何从流中读取命令的完整输出?

注意:我不想使用任何第三方库。

TCP流无法知道当前响应是否已完成。 它所知道的只是它是否刚刚从网络上接收到数据。 它不知道下一个数据包现在是否即将到来(多数据包响应)还是是否会晚得多(如果响应完成)。

相反,您需要预测何时可以获得更多数据。 您应该继续阅读,直到收到IMAP协议中记录的带标记的完成响应。

但是,由于服务器可以随时向您发送信息,因此似乎希望在后台线程上连续读取IMAP。 因此,您可能应该有一个始终位于ReadLine()的单独线程。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM