黑白self.packetFlow.ReadBytes与套接字读取的区别

时间:2018-12-24 14:35:23

标签: ios sockets networkextension

我正在尝试从数据包隧道NEPacketTunnelProvider中读取数据。 现在,我正在尝试使用

读取数据
let tracker1 = GAI.sharedInstance().tracker(withTrackingId: "...")
            let hitParams = GAIDictionaryBuilder()
            hitParams.setCampaignParametersFromUrl(path)
            let medium = self.getQueryStringParameter(url: path, param: "utm_medium")

            hitParams.set(medium, forKey: kGAICampaignMedium)
            hitParams.set(path, forKey: kGAICampaignSource)

            let hitParamsDict = hitParams.build()

            tracker1?.allowIDFACollection = true

            tracker1?.set(kGAIScreenName, value: "...")
            tracker1?.send(GAIDictionaryBuilder.createScreenView().setAll(hitParamsDict as? [AnyHashable : Any]).build() as? [AnyHashable : Any])

// this is for url utm_medium parameter

/*
func getQueryStringParameter(url: String, param: String) -> String? {
    guard let url = URLComponents(string: url) else { return nil }
    return url.queryItems?.first(where: { $0.name == param })?.value
}*/

功能。 它似乎工作正常。但是现在我想通过使用self.packetFlow函数的网络句柄来读取数据包,例如

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

,并使用此文件描述符从隧道读取数据包数据。像这样

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

但是现在当我像这样从套接字读取数据时。看来数据与我之前使用self.packetFlow收到的数据不相似。

还有谁知道为什么会这样。以及我应该如何获得与self.packetFlow.readPackets中相似的数据。

任何帮助指针将不胜感激。

1 个答案:

答案 0 :(得分:0)

我找到了答案或我自己的查询。使用文件描述符时,向数据中添加了4个字节的额外协议信息。我们也需要处理它。