Разница в ч / б self.packetFlow.ReadBytes и чтение сокетов - PullRequest
0 голосов
/ 24 декабря 2018

Я пытаюсь прочитать данные из туннеля пакета NEPacketTunnelProvider.Сейчас я пытаюсь прочитать данные с помощью функции

 self.packetFlow.readPackets { [weak self] (packets: [Data], protocols: [NSNumber]) in }

.Кажется, работает нормально.Но теперь я хочу прочитать пакеты, используя сетевой дескриптор функции self.packetFlow, например,

 let tunFd = self.packetFlow.value(forKeyPath: "socket.fileDescriptor") as! Int32

и использовать этот файловый дескриптор для чтения данных пакета из туннеля.вот так

    char *buffer1 = malloc(1024);
    ssize_t length = read(tunFd, buffer1, 1024);

Но теперь, когда я читаю данные из сокета, вот так.Кажется, что данные не похожи на то, что я получаю ранее, используя self.packetFlow.

Кто-нибудь еще знает, почему это происходит?и что мне делать, чтобы получить те же данные, что и в self.packetFlow.readPackets ..

Любой указатель помощи будет оценен.

1 Ответ

0 голосов
/ 07 января 2019

Я нашел ответ или свой запрос.К данным добавляется 4 байта дополнительной информации о протоколе, пока мы используем дескриптор файла.Мы должны справиться и с этим.

...