Java 在带有VPN服务的Android上使用Netty4时保护套接字
我正在尝试使用Android中内置的VPN服务来捕获流量并将其发送到远程服务器。我试图使用Netty,但似乎我已经陷入了僵局Java 在带有VPN服务的Android上使用Netty4时保护套接字,java,android,sockets,netty,android-vpn-service,Java,Android,Sockets,Netty,Android Vpn Service,我正在尝试使用Android中内置的VPN服务来捕获流量并将其发送到远程服务器。我试图使用Netty,但似乎我已经陷入了僵局 为了将数据从手机发送到服务器,我需要在套接字上调用Protect(),否则我传输的所有数据都将被循环回VPN服务。但是,我不确定在使用Netty4时是否可以获得套接字对象或其文件描述符。您需要扩展NioSocketChannel并覆盖DoConnection方法: public class ProtectedNioSocketChannel extends NioSock
为了将数据从手机发送到服务器,我需要在套接字上调用Protect(),否则我传输的所有数据都将被循环回VPN服务。但是,我不确定在使用Netty4时是否可以获得套接字对象或其文件描述符。您需要扩展NioSocketChannel并覆盖DoConnection方法:
public class ProtectedNioSocketChannel extends NioSocketChannel {
@Override
protected boolean doConnect(SocketAddress remoteAddress, SocketAddress localAddress) throws Exception {
SocketChannel ch = javaChannel();
if(!VpnServiceHelper.protect(ch.socket())){
Log.i(Tag, "Can't protect Socket");
return false;
}
return super.doConnect(remoteAddress, localAddress);
}
以及:
您需要扩展NioSocketChannel并重写doConnect方法:
public class ProtectedNioSocketChannel extends NioSocketChannel {
@Override
protected boolean doConnect(SocketAddress remoteAddress, SocketAddress localAddress) throws Exception {
SocketChannel ch = javaChannel();
if(!VpnServiceHelper.protect(ch.socket())){
Log.i(Tag, "Can't protect Socket");
return false;
}
return super.doConnect(remoteAddress, localAddress);
}
以及: