2012-04-03 80 views
1

正在使用netty開發一個java應用程序,在這個應用程序中,它將從設備讀取數據並將其放入數據庫中。但是在這裏,問題是設備發送一半數據後,它將讀取數據並再次發送一半數據。在線程中,Thread.sleep()方法需要等待完整的數據。在Netty使用非阻塞Ios(NIO)。請告訴我如何等待NIO讀取完整的數據。如何使用Netty從設備讀取完整數據?

感謝

回答

1

您需要實現自己的FrameDecoder這可確保將ChannelBuffer類型只得到根據您的業務處理程序,一旦它完成。

參見[1]。

[1] http://netty.io/docs/stable/api/org/jboss/netty/handler/codec/frame/FrameDecoder.html

+0

但是在這裏什麼是設備發送的數據,只有一個幀。在我的情況下,設備正在發送破損的格式數據。 – Raghava 2012-04-03 06:06:57

+0

不一定。我也有同樣的問題。設備以破碎的幀發送數據,它正在爲我工​​作。對於例如LengthBasedFrameDecoder將等待直到來自設備的全部數據已經到達,然後纔將其發送到下一個解碼器。我建議你徹底瀏覽framedecoder的例子,你會得到一個解決方案。 – Abe 2012-04-04 01:59:22

0

您可以簡單地使用ReplayingDecoder,這將讀取到的數據是完整的。 ​​

相關問題