Java nio no-blocking客户端服务器应用程序和自定义协议

时间:2015-03-26 14:48:49

标签: java sockets nio nonblocking custom-protocol

我正在研究java.nio无阻塞客户端服务器应用程序,该应用程序有一个非常简单的自定义协议:

MyApplcationProtocol:
int lenpalcket;
int filedone;
String Description
byte[] myBodyProtcol

(体长不固定。)

问题是有时我在ByteBuffer中没有足够的字节然后解码失败

while (myByteBuffer.hasRemaining()) {
   Utils.fillMyClass(myclass,myByteBuffer);

public void fillMyClass(myclass,myByteBuffer){
   myclass.filedone = myByteBuffer.getInt();
   ...
   int bodyLen = myByteBuffer.getInt();
   byte[] bodyByte = new byte[bodyLen];
   myByteBuffer.get(bodyByte);
   ...
}

我必须等待下一个缓冲区才能完成填充类,所以我想避免放睡,因为它会阻塞线程。 是否有模式/方式/链接/示例来解决此问题?

我还尝试将“未读字节”存储在临时缓冲区中,但我不喜欢它,有时候我无法正常工作。

谢谢,任何帮助表示赞赏

0 个答案:

没有答案
相关问题