如何解决NWEthernetChannel无法正常工作
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 举报,一经查实,本站将立刻删除。