從套接字接收數據有奇怪的問題。 在客戶端即時通訊使用空氣插座。在服務器Java netty上。 即時消息寫入套接字簡單包:int numPacket,int textLength,utf8String文本。並閱讀客戶端。套接字。當我需要數據包時,數據包保持隊列狀態
//server
buffer.writeInt(packetId);
ChannelBuffer ch = ChannelBuffers.copiedBuffer(text, CharsetUtil.UTF_8);
buffer.writeInt(text.length());
buffer.writeBytes(ch);
//client
packetId = socket.readInt()
packetLen = socket.readInt()
text = socket.readUtfBytes(packetLen)
有時一個數據包()犯規被客戶端接收,但服務器在發送有和tcpdump顯示,包被髮送。如果服務器發送新的數據包,客戶端讀取先前的數據包,並且不接收新的數據包 - 它就像我不需要的隊列一樣工作。 P.S遺憾的英語不好-_-
tcpdump顯示數據包被正確發送。 Flush不會幫助我 – user1081056 2012-03-22 10:16:37