我正在編寫一個usenet新聞閱讀器,並調用XOVER id-
消息來獲取組中的所有文章。避免在socket讀取中使用Thread.Sleep()
如果我使用此代碼,我只得到響應的前5KB:
while((read = _networkStream.Read(buffer, 0, 5000)) > 0)
{
ret += Encoding.ASCII.GetString(buffer, 0, read);
if(read < 5000)
break;
}
但是,如果我添加Thread.Sleep(100);
進入死循環,我得到的整個列表。
我能以另一種方式做到這一點嗎?
這是行不通的。字符串完整。當讀取數據的最後一個緩衝區時,它被卡在'_networkStream.Read(buffer,0,5000)'上。它永遠不會退出循環。 – ErikTJ 2010-03-26 19:35:26
@Erik:對不起,我忽略了你在做NNTP。回答擴展到建議如何使用這種面向行的持久連接協議來做到這一點。 – JaakkoK 2010-03-26 19:45:41
添加一個ret.EndsWith(「。\ r \ n」)解決了這個問題。 – ErikTJ 2010-03-26 19:46:56