通过集成“iOS网络诊断sdk”,您可以轻松地在iOS上实现ping / traceroute /移动公共网络信息/端口扫描等网络诊断相关的功能。
利用该sdk开发的网络诊断app截图:
- 在App Store中下载 UNetState
- 欢迎 star & fork
- iOS >= 9.0
- Xcode >= 7.0
- 设置
Enable Bitcode
为NO
在你工程的Podfile
中添加以下依赖:
pod 'PhoneNetSDK'
首先需要在你的项目中导入SDK
头文件:
#import <PhoneNetSDK/PhoneNetSDK.h>
另外,你需要将-lc++
,-ObjC
,$(inherited)
添加到项目的Build Setting
->other links flags
中。 如下所示:
[[PhoneNetManager shareInstance] netStartPing:@"www.baidu.com" packetCount:10 pingResultHandler:^(NSString * _Nullable pingres) {
// your processing logic
}];
_tcpPing = [PNTcpPing start:hostDomain port:portNum.integerValue count:3 complete:^(NSMutableString *pingres) {
// your processing logic
}];
在命令行中默认的traceroute命令发的是UDP的包(简称 udp traceroute):
_udpTraceroute = [PNUdpTraceroute start:ip complete:^(NSMutableString *res) {
// your processinig logic
}];
在mac的terminal中,输入traceroute -I baidu.com
就是采用ICMP协议的方式做traceroute. sdk中提供了这种功能:
[[PhoneNetManager shareInstance] netStartTraceroute:@"www.baidu.com" tracerouteResultHandler:^(NSString * _Nullable tracertRes, NSString * _Nullable destIp) {
// your processing logic
}];
[[PhoneNetManager shareInstance] netLookupDomain:@"www.google.com" completeHandler:^(NSMutableArray<DomainLookUpRes *> * _Nullable lookupRes, PNError * _Nullable sdkError) {
// your processing logic
}];
[[PhoneNetManager shareInstance] netPortScan:@"www.baidu.com" beginPort:8000 endPort:9000 completeHandler:^(NSString * _Nullable port, BOOL isOpen, PNError * _Nullable sdkError) {
// your processing logic
}];
如果你要做局域网活跃ip扫描功能的话,那么利用该SDK你可以很快的监听到每个活跃的ip,并且SDK还会返回给你扫描进度。
具体步骤如下:
- 创建对象并设置代理
PNetMLanScannerDelegate
- 启动扫描,并通过其代理方法处理活跃的ip
- 监听扫描进度(可选)
PNetMLanScanner *lanScanner = [PNetMLanScanner shareInstance];
lanScanner.delegate = self;
[lanScanner scan];
- 设置SDK的日志级别
- 获取设备的公网ip信息
- 随着版本的迭代,会提供更多高级功能
ios平台网络诊断APP(使用的是该SDK),支持对ip和域名的ping,traceroute(udp,icmp协议),支持tcp ping, 端口扫描,nslookup等功能。
直接进入到Podfile
文件所在目录安装该SDK即可成功运行。
macdeiMac:NetPinger ethan$ pod install
Analyzing dependencies
Downloading dependencies
Installing PhoneNetSDK (1.0.7)
Generating Pods project
Integrating client project
[!] Please close any current Xcode sessions and use `NetPinger.xcworkspace` for this project from now on.
Sending stats
Pod installation complete! There is 1 dependency from the Podfile and 1 total pod installed.
在开发中,经常会遇到接口出问题(DNS解析出错等)所以需要检测手机终端到服务端的网络是不是通,所以就需要在手机中断ping
一下,但是市场上的免费的网络检测工具大都有弹出广告影响体验(eg:iNetTools),所以有必要自己开发一款网络剧检测app。
所有的功能都是利用该SDK提供的功能实现的,页面和图标主要是模仿MAC上的NetWork Utility
,希望对你的应用提供有价值的参考。
- 如果你有任何问题或需求,请提交issue
- 如果你要提交代码,欢迎提交 pull request
- 欢迎
star
&fork