Я пытаюсь использовать VpnService для реализации интернет-прокси-функции (я новичок в этом аспекте, я не владею английским языком и использую программное обеспечение для перевода).Процесс моего проекта выглядит следующим образом: 1. Перехватывать все IP-пакеты через VpnService.
val pfd = Builder().let {
it.setMtu(1500)
it.addAddress("10.8.0.2", 32)
it.addRoute("0.0.0.0", 0)
// it.addDnsServer("114.114.114.114")
it.setSession("test")
return@let it.establish()
}
pfd.fileDescriptor.let {
ous = FileOutputStream(it)
val ins = FileInputStream(it)
var size = 0
ins.use { input ->
ous.use {
while (size != -1 && isRunning) {
while (ins.read(byteArray).also { size = it } > 0 && isRunning) {
if (MUDPService.instance?.isStop() == true) {
isRunning = false
}
onIpPacketUdpSend(mIPHeader, size)
}
Thread.sleep(20)
}
}
}
}
Отправка IP-пакета на удаленный прокси-сервер через локальную службу udp (создайте DatagramPacket в качестве контейнера IP-пакета, а затем отправьте .. Получите ответ локальной службы udp и внутренние данные (т. Е.IP-пакет в ответ). Запись в FileOutputStream.
fun responseUdpPacket(b: ByteArray?) {
try {
b?.let { it ->
ous?.write(it, 0, it.size)
}
} catch (e: IOException) {
e.printStackTrace()
}
}
Сейчас я нахожусь в ситуации, когда я получил пакет от службы udp, но при записи вFileOutputStream, он не имеет никакого эффекта. Не работает в сети. Интересно, что пошло не так?