NWEthernetChannel无法正常工作

问题描述

WWDC2019的“网络的先进性” 演讲引入了一个新类,该类在Mac OS X 10.15中引入,名为NWEthernetChannel,用于监视自定义(非IP)协议。这是针对MacOS的。

我有兴趣监视Cisco Discovery Protocol (CDP)数据包,但是,该类无法正常工作-receiveHandler没有收到任何数据。

我验证的内容

  1. NWEthernetChannel处于运行状态,处于ready状态,监视活动NWInterface的活动eth0
  2. 根据文档,已设置com.apple.developer.networking.custom-protocol权利。
  3. 我使用sudo tcpdump -nn -v -i en0 -s 1500 'ether[20:2] == 0x2000'验证了相同的逻辑。这返回了预期的结果。

请在下面查看我的实现

self._ethernetChannel = NWEthernetChannel(on: self._ethernetInterface!,etherType: 0x2000)

self._ethernetChannel!.stateUpdateHandler = {state in switch state {
            case .ready:
                NSLog("ready");
                break;
            case .waiting(let error as NWError):
                print("Waiting:",error);
                break;
            case .failed(let error as NWError):
                print("Failed:",error);
                break;
            case .cancelled:
                print("cancelled");
                break;
            case .preparing:
                print("preparing");
                break;
            case .setup:
                print("setup");
            default:
                NSLog("default");
                break;
                }}
            
self._ethernetChannel!.receiveHandler = {(packetData,vlanTag,localAddress,remoteAddress) in           
     print("received data");
};
            
self._ethernetChannel!.start(queue: .main);

有人可以照亮吗?

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)