Я пытаюсь создать простой TCP-сервер, используя apache MINA. У меня есть небольшой клиент, написанный на C, который отправляет данные на сервер. Данные, которые должны быть отправлены в виде s struct
struct Router {
unsigned int id;
char imsi[16];
char imei[16];
};
struct Router router = {.id=1, .imsi="1234567890", .imei="0987654321"};
send(sockfd, (void*)&router, sizeof(router), 0);
На стороне сервера я реализую метод messageReceived
следующим образом
@Override
public void messageReceived(IoSession session, Object message) throws Exception {
System.out.println("Message received from " + session.getRemoteAddress());
System.out.prinln(message);
//Do some work with the message
}
Полученное сообщение печатается на консоль как
HeapBuffer[pos=0 lim=36 cap=2048: C1 06 00 00 31 32 33 34 35 36 37 38 39 30 00 00 00 00 00 00 30 39 38 37 36 35 34 33 32 31 00 00 00 00 00 00...]
Я не уверен, к какому классу я должен привести объект message
. Я пытался привести его к типу java.nio.ByteBuffer
, но во время выполнения выдает ошибку, что
java .lang.ClassCastException: class org. apache .mina.core.buffer. SimpleBufferAllocator $ SimpleBuffer нельзя привести к классу java .nio.ByteBuffer .
Класс SimpleBuffer
является закрытым для файла SimpleBufferAllocator.java
, поэтому я не могу его использовать. Есть ли способ правильно разобрать полученное сообщение?
Спасибо.