簡體   English   中英

Netty 3.9客戶端未發送編碼器

[英]Netty 3.9 client not sending encoder

我在使用Netty 3.9時遇到問題,我在該客戶端中建立了一個在連接到服務器后立即發送/執行編碼器的客戶端。 但是,它只是連接而沒有發送編碼器。

客戶端處理程序

public final class ClientHandler extends IdleStateAwareChannelUpstreamHandler {

    @Override
    public void channelConnected(ChannelHandlerContext ctx, ChannelStateEvent e) throws Exception {
        Channel channel = ctx.getChannel();
        logger.info("Channel connected: " + channel);
    }
}

ClientPipelineFactory

private final ClientHandler handler = new ClientHandler();

@Override
public ChannelPipeline getPipeline() throws Exception {
    ChannelPipeline pipeline = Channels.pipeline();
    pipeline.addLast("handler", handler);
    pipeline.addLast("encoder", new HandshakeEncoder());
    return pipeline;
}

握手編碼器

public final class HandshakeEncoder extends OneToOneEncoder {

    @Override
    protected Object encode(ChannelHandlerContext ctx, Channel channel, Object msg) throws Exception {
        ChannelBuffer buffer = ChannelBuffers.buffer(1);

        buffer.writeByte(49);
        return buffer;
    }
}

僅當您向通道中寫入內容時,才會調用編碼器。 我猜你想要的是擴展SimpleChannelUpstreamHandler並使用類似的東西:

public final class HandshakeHandler extends SimpleChannelUpstreamHandler {

    @Override
    public void channelConnected(ChannelHandlerContext ctx, ChannelStateEvent e) throws Exception {
        Channel channel = ctx.getChannel();
        ChannelBuffer buffer = ChannelBuffers.buffer(1);
        buffer.writeByte(49);
        channel.write(buffer);
    }
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM