[英]VPN Service. The packets are not passing through the tunnel
当代码在模拟器中执行时,以及当我启动服务并在浏览器应用程序中浏览网站时,它无法访问该网站,并向我显示ERR_NAME_NOT_RESOLVED
。
请告诉我问题出在哪里。
FileInputStream in = new FileInputStream(
mInterface.getFileDescriptor());
FileOutputStream out = new FileOutputStream(
mInterface.getFileDescriptor());
DatagramChannel tunnel = DatagramChannel.open();
tunnel.connect(new InetSocketAddress("127.0.0.1", 8087));
Log.e("Localhost:",InetAddress.getLocalHost().toString());
protect(tunnel.socket());
Log.e("MyVpnJavaClass", "protected tunnel");
ByteBuffer packet = ByteBuffer.allocate(32767);
Log.e("MyVpnJavaClass", "Byte Buffer packets");
int timer = 0;
Thread.sleep(100);
上面的代码在LOGCAT
显示到“ BYTE BUFFER PACKETS”之前都可以正常工作。 但是在while循环中,它不会显示所有的LOGCAT
消息。 请纠正我的问题
while(true) {
Log.e("MyVpnJavaClass", "while is true");
boolean idle = true;
int length = in.read(packet.array());
if (length > 0) {
Log.e("MyVpnJavaClass", "Lenght is > 0");
packet.limit(length);
Log.e("MyVpnJavaClass", "LIMITING Lenght");
DatagramPacket datagramPacket = new DatagramPacket(packet.array(),packet.array().length);
byte[] dataInThePacket = datagramPacket.getData();
System.out.println(DatagramSocketService.stringFromPacket(datagramPacket));
Log.e("MyVpnJavaClass", "system");
TCPPacket tcpPacket = new TCPPacket(0,packet.array());
int sourcePort = tcpPacket.getSourcePort();
String destAddress = tcpPacket.getDestinationAddress();
int destPort = tcpPacket.getDestinationPort();
Log.e("MyVpnJavaClass", "TCPPacket");
datagramPacket.setSocketAddress(new InetSocketAddress("127.0.0.1", 8087));
Log.e("MyVpnJavaClass", "datagram packet");
UDPPacket udpPacket = new UDPPacket(0, packet.array());
System.out.println("TCP Source port: " + );
System.out.println("TCP Destination port: " + );
System.out.println("TCP Destination address: " +);
System.out.println("Length of data: " + );
Log.e("MyVpnJavaClass", "System out commands");
System.out.println(" ");
System.out.println("UDPPacket destination address: " +);
System.out.println("UDPPacket destination port: " +);
System.out.println("IP Protocol: " + );
System.out.println("Length of data: " + );
Log.e("MyVpnJavaClass", "UDP Packets");
tunnel.write(packet);
packet.clear();
Log.e("MyVpnJavaClass", "Write & Clear");
idle = false;
if (timer < 1) {
timer = 1;
}
}
尝试一次检查程序的一部分。 即使我正在从事类似的项目,也遇到类似的问题。 我尝试在in.read之后立即编写tunnel.write()并成功。 我搜寻了为什么会发生,但没有得到任何答案
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.