2010-06-13 59 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