Проблема преобразования пакетных данных в apache мин - PullRequest
0 голосов
/ 14 января 2020

Я пытаюсь создать простой 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, поэтому я не могу его использовать. Есть ли способ правильно разобрать полученное сообщение?

Спасибо.

...