问题描述
WWDC2019的“网络的先进性” 演讲引入了一个新类,该类在Mac OS X 10.15中引入,名为NWEthernetChannel
,用于监视自定义(非IP)协议。这是针对MacOS的。
我有兴趣监视Cisco Discovery Protocol (CDP)数据包,但是,该类无法正常工作-receiveHandler
没有收到任何数据。
我验证的内容
-
NWEthernetChannel
处于运行状态,处于ready
状态,监视活动NWInterface
的活动eth0
。 - 根据文档,已设置
com.apple.developer.networking.custom-protocol
权利。 - 我使用
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 (将#修改为@)