下面列出了怎么用 io.netty.handler.codec.socksx.v5.Socks5CommandResponse 的API类实例代码及写法,或者点击链接到github查看源代码。
@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();
}