2010-06-13 28 views
0

我正在尝试编写Imap4客户端。
为此,我使用SslStream连接到服务器。
一切都很好,直到我发送“登录”命令。
当我尝试获得答案时,SslStream.ReadByte()会阻塞该线程。
结果是我的程序总是崩溃。
这里发生了什么?SslStream.ReadByte()块线程?

代码:

 if (ssl) 
{ 
    s = stream; 
}

int cc = 0; MessageBox.Show("entered"); while (true) { int xs = s.ReadByte(); MessageBox.Show(xs.ToString()); if (xs > 0) { buf.Add((byte)xs); cc++; if (xs == '\n') { break; } if (cc > 10) MessageBox.Show(en.GetString(buf.ToArray())); } else { break; } } MessageBox.Show("left");

回答

4

是,Stream.ReadByte()将阻塞,直到任一:

  • 流被关闭(在这种情况下则返回-1)
  • 数据被接收的流,其中case下一个字节将返回

因此,大概你连接的服务器没有发送任何数据......它可能会w等待你的更多数据。你有多确信你的登录命令正确发送?你是否冲刷了你正在写的流?发送所需的任何分隔符或行结束符?

+0

ooops我想我没有线终结者 – alex 2010-06-13 16:42:09

+0

是的,就是这样!谢谢 – alex 2010-06-13 16:52:31