安卓端netty_有人在 Android 中使用过 Netty 框架吗?

小弟使用 Android 提供 VpnSerivce+Netty 框架开发一个全局网络代理 App 时遇到一个问题,就是需要用 VpnService.protect 一下最外层联网 channel 对应的 socket,不然 App 本身发出的数据包会被转发到 Tun 网卡,导致无限循环无网络。

对于直连外网的需求,我们可以通过反射来获取 channel 对应的 socket,并在 Bootstrap 那里直接 Protect:

public static void protectChannel(Channel channel) {

try {

NioSocketChannel nioSocketChannel = (NioSocketChannel) channel;

SocketChannel javaSocketChannel = (SocketChannel) getJavaSocketChannelMethod.invoke(nioSocketChannel);

LocalVpnService.newInstance().protect(javaSocketChannel.socket());

} catch (Exception e) {

Log.d("NettySocks", "protectChannel: " + e.getMessage());

e.printStackTrace();

}

}

但对于非直连外网,即我要在 pipeline 的末端加一个 Netty 自带的 HttpProxyHandler,给网络套一层 Http 代理时,怎么找到这个 HttpProxyHandler 对应的 socket 进行 Protect 呢?

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值