【发布时间】:2011-06-14 19:26:06
【问题描述】:
我正在尝试与使用 DataInputStream.readUTF 和 DataOutputStream.writeUTF 的服务器通信。
我执行了通常的引导代码来设置我的客户端,并设置了以下 pipelinefactory
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());
}
});
在扩展 SimpleChannelUpstreamHandler 的 MyClientHandler 中,我有以下内容:
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
}
}
我成功地从服务器接收消息,但服务器没有收到我的“你好”消息。不知道我可能忽略了什么。
另外,请注意发送的布尔值,我可以添加这些字段并在没有线程问题的情况下使用它们吗?
【问题讨论】: