Добрый день
Подскажите плиз, как правильно реализовать протокол, исходя из следующих требований. При получении данных отправить ответ от сервера (детальное описание в самом низу)?
реализую функцию внутри протокола, разбираю бинарные данные - с этим все ок, функция завершается
@Override
protected Object decode(
Channel channel, SocketAddress remoteAddress, Object msg) throws Exception
return position;
Я так понимаю до этой строчки, нужно вызвать что-то вроде
ChannelBuffer response = ChannelBuffers.dynamicBuffer();
response.writeBytes("<HEAD>*<S".getBytes(Charset.forName("UTF-8")));
channel.write(response);
Вот логика
В ответ сервер должен прислать трекеру пакет такой же структуры и произвольным
содержимом. В случае если трекер получает корректный пакет с данной структурой в ответ на свою посылку пакет считается переданным успешно и трекер переходит к отправке нового пакета. В случае если ответного пакета не получено или получен некорректный пакет (не совпадает контрольная сумма или преамбула), исходный пакет считается отправленным с ошибкой и его отправка повторяется.
Смотрите примеры. Если у вас есть StringEncoder
, то самостоятельно конвертировать ничего не надо и можно отправлять ответ просто так:
channel.write("<HEAD>*<S");
Антон, спасибо, нет бинарный протокол. Сделал так:
position.setLatitude(latitude);
position.setLongitude(longitude);
ChannelBuffer response = ChannelBuffers.dynamicBuffer();
ChannelBuffer bufNew = (ChannelBuffer) msg;
response.writeBytes(bufNew, 0, 20);
channel.write(response);
return position;
Сегодня заберу устройство проверю, если заработает - поделюсь реализацией, правда нам только широта и долгота для проекта нужны, все параметры не парсили.
Добрый день
Подскажите плиз, как правильно реализовать протокол, исходя из следующих требований. При получении данных отправить ответ от сервера (детальное описание в самом низу)?
реализую функцию внутри протокола, разбираю бинарные данные - с этим все ок, функция завершается
@Override protected Object decode( Channel channel, SocketAddress remoteAddress, Object msg) throws Exception return position;
Я так понимаю до этой строчки, нужно вызвать что-то вроде
ChannelBuffer response = ChannelBuffers.dynamicBuffer(); response.writeBytes("<HEAD>*<S".getBytes(Charset.forName("UTF-8"))); channel.write(response);
Вот логика
В ответ сервер должен прислать трекеру пакет такой же структуры и произвольным
содержимом. В случае если трекер получает корректный пакет с данной структурой в ответ на свою посылку пакет считается переданным успешно и трекер переходит к отправке нового пакета. В случае если ответного пакета не получено или получен некорректный пакет (не совпадает контрольная сумма или преамбула), исходный пакет считается отправленным с ошибкой и его отправка повторяется.