2012-04-03 41 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,这将读取到的数据是完整的。 ​​

相关问题