我必須發送大量數據給連接到我的服務器的小客戶端。寫入循環中的通道
所以,我有這樣的:
for(;;) {
messageEvent.getChannel().write("Hello World");
}
的問題是,由於某種原因,客戶端接收髒數據,像Netty的緩衝區不是在每次迭代清楚,所以我們得到了像「你好WorldHello」。
如果我讓我的代碼把一個線程睡眠一切變化不大正常工作:
for(;;) {
messageEvent.getChannel().write("Hello World");
Thread.sleep(1000);
}
在這兩種情況下,我沒有使用任何禁用此以表明結束。 – user1146287 2012-01-13 13:02:48
在這兩種情況下,客戶端都會根據需要讀取儘可能多的輸入,或者在創建項目時可用,然後循環查找下一個項目。如果客戶在閱讀第一個項目之前等待了一秒以上,那麼當它讀取它的輸入時,它會看到第一個和第二個項目的數據位於其輸入中,並且會認爲這是單個項目。 – MRAB 2012-01-13 20:51:07