类 io.netty.handler.codec.socksx.v5.Socks5CommandResponse 源码实例Demo

下面列出了怎么用 io.netty.handler.codec.socksx.v5.Socks5CommandResponse 的API类实例代码及写法,或者点击链接到github查看源代码。

源代码1 项目: netty-4.1.22   文件: Socks5ProxyServer.java

@Override
protected boolean handleProxyProtocol(ChannelHandlerContext ctx, Object msg) throws Exception {
    if (!authenticated) {
        authenticated = authenticate(ctx, msg);
        return false;
    }

    Socks5CommandRequest req = (Socks5CommandRequest) msg;
    assertThat(req.type(), is(Socks5CommandType.CONNECT));

    Socks5CommandResponse res =
            new DefaultSocks5CommandResponse(Socks5CommandStatus.SUCCESS, Socks5AddressType.IPv4);
    intermediaryDestination = SocketUtils.socketAddress(req.dstAddr(), req.dstPort());

    ctx.write(res);

    ctx.pipeline().remove(ENCODER);
    ctx.pipeline().remove(DECODER);

    return true;
}
 

@Override
void read(ConnectionFlow flow, Object msg) {
    removeHandlerIfPresent(SOCKS_ENCODER_NAME);
    removeHandlerIfPresent(SOCKS_DECODER_NAME);
    if (msg instanceof Socks5CommandResponse) {
        if (((Socks5CommandResponse) msg).status() == Socks5CommandStatus.SUCCESS) {
            flow.advance();
            return;
        }
    }
    flow.fail();
}
 
 类所在包
 类方法
 同包方法