Я пытаюсь выяснить, какое приложение на моем устройстве выполнило любой запрос на использование Интернета (называемый любым api и т.д.). Для этого я создал класс, расширенный из класса "VpnService", чтобы убедиться, что мои маршруты трафика устройств через я, хотя я фактически не подключался к VPN, вместо этого я просто подделываю его и позволяю трафику проходить через меня до 0.0.0.0. Код ниже, он работает нормально, но я хочу выяснить, какое приложение инициировало запрос на использование Интернета или чей пакет входит в/из основного цикла while. Кроме того, есть ли способ остановить запросы из любого приложения - в любом случае [входящие и исходящие]?
*private Thread mThread;
private ParcelFileDescriptor mInterface;
//a. Configure a builder for the interface.
Builder builder = new Builder();
// Services interface
@Override
public int onStartCommand(Intent intent, int flags, int startId) {
this.getApplicationInfo();
// Start a new session by creating a new thread.
mThread = new Thread(new Runnable() {
@Override
public void run() {
try {
//a. Configure the TUN and get the interface.
mInterface = builder.setSession("MyVPNService")
.setMtu(1500)
.addAddress("192.168.1.66", 32)
.addRoute("0.0.0.0", 0).establish();
//b. Packets to be sent are queued in this input stream.
FileInputStream in = new FileInputStream(
mInterface.getFileDescriptor());
//b. Packets received need to be written to this output stream.
FileOutputStream out = new FileOutputStream(
mInterface.getFileDescriptor());
//c. The UDP channel can be used to pass/get ip package to/from server
DatagramChannel tunnel = DatagramChannel.open();
// Connect to the server, localhost is used for demonstration only.
tunnel.connect(new InetSocketAddress("127.0.0.1", 8087));
//d. Protect this socket, so package send by it will not be feedback to the vpn service.
protect(tunnel.socket());
// ByteBuffer packet = ByteBuffer.allocate(32767);
//e. Use a loop to pass packets.
while (true) {
//---> Here in this loop the packets are coming in and out..
}
}
} catch (Exception e) {
// Catch any exception
e.printStackTrace();
} finally {
try {
if (mInterface != null) {
mInterface.close();
mInterface = null;
}
} catch (Exception e) {
}
}
}
}, "MyVpnRunnable");
//start the service
mThread.start();
return START_STICKY;
}*
Рено Джонс