Разница в ч / б self.packetFlow.ReadBytes и чтение сокетов
Я пытаюсь прочитать данные из туннеля пакета 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 ответ
Я нашел ответ или мой собственный запрос. К данным добавляется 4 байта дополнительной информации о протоколе, пока мы используем дескриптор файла. Мы должны справиться и с этим.