我也是。 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状态,当我必须传递两个命令:USER
和PASS
时,如果我未传递正确的命令,则服务器将关闭连接(这就是为什么获取IOException)。仅有的3个不会关闭连接的命令是:USER
,PASS
,QUIT
。我希望这个线程将来能对某人有所帮助:)
关于c# - C#SslStream在第二个请求时引发IOException,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/24738553/