[英]Read contents from SslStream
我有一个应用程序,通过该应用程序,我可以使用以下命令执行IMAP命令:
TcpClient
连接到IMAP服务器 SslStream
写入和读取命令 问题:
SslStream.Read
上的while
循环似乎不起作用 StreamReader.ReadLine
, ReadToEnd
, Read
方法不起作用 样例代码:
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.