我正在尝试从数据包隧道 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 中类似的数据。
任何帮助指针将不胜感激。