Запись в выходной поток VpnService не дает эффекта - PullRequest
0 голосов
/ 17 мая 2019

Я пытаюсь использовать 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, он не имеет никакого эффекта. Не работает в сети. Интересно, что пошло не так?

...