Я пытаюсь связаться с сервером, который использует DataInputStream.readUTF и DataOutputStream.writeUTF.
Я выполнил обычный загрузочный код для настройки моего клиента и установил следующий конвейерфакторией
bootstrap.setPipelineFactory(new ChannelPipelineFactory() {
@Override
public ChannelPipeline getPipeline() throws Exception {
return Channels.pipeline(
new LengthFieldBasedFrameDecoder(65536, 0, 2),
new StringDecoder(CharsetUtil.UTF_8),
new StringEncoder(CharsetUtil.UTF_8),
new MyClientHandler());
}
});
в MyClientHandler, который расширяет SimpleChannelUpstreamHandler, у меня есть следующее:
boolean sent = false; //is this thread safe?
@Override
public void messageReceived(ChannelHandlerContext ctx, MessageEvent e) {
logger.log(Level.INFO, e.getMessage().toString());
e.getChannel().write("Hello over there!");
if(!sent){
//do something and set sent
}
}
Мне удалось получить сообщения от сервера успешно, но сервер не получает мое сообщение "привет там".Не уверен, что я мог упустить из виду.
Кроме того, обратите внимание на отправленное логическое значение, могу ли я добавить такие поля и работать с ними без проблем с потоками?