-
Notifications
You must be signed in to change notification settings - Fork 146
nettracker
shixuemei edited this page Jan 21, 2017
·
9 revisions
-
Ping方式:相当于执行ping命令
- 功能:检查端到端的连通性,查看对端的响应时间(包括最短,最长,平均)及丢包率
- 优缺点:探测过程快,结果简明易懂,但是无法知道链路上各节点状况
- 适用场景:在不关心链路上各节点信息,只希望判断对端可用性的情况下推荐该方式
-
MTR方式:相当于执行MTR命令
- 功能:查看链路上各节点的ip地址、响应时间(包括最短,最长,平均)及丢包率
- 优缺点:能够得知链路上各节点状况,判断问题所在,但探测过程需要时间,结果相对复杂,需要相关人员具备基本的网络知识
- 适用场景:在关注链路整体状态,希望定位问题节点的情况下推荐该方式
- 相关功能均有由类KSYNetTracker实现
- v1.9.5及以上
属性/方法 | 默认值 | 说明 | 有效范围 |
---|---|---|---|
action | KSY_NETTRACKER_ ACTION_MTR | 探测方式: Ping 或者 MTR | KSY_NETTRACKER_ACTION_MTR - KSY_NETTRACKER_ACTION_PING |
timeout | 1000 | 探测报文的超时时间,单位是ms | 100 - 2000 |
maxttl | 64 | 探测使用的最大ttl值 | 1 - 0x7FFFFFFF |
number | 10 | 探测次数 | 1 - 20 |
- 完成一次探测时发送一次通知
- 监听到此消息后可通过routerInfo获取已完成的统计结果
- 如果当前的探测方式为KSY_NETTRACKER_ACTION_PING,则在usrInfo字典中,关键字count指明当前的探测次数;关键字rtt表示本次探测消耗的时间,单位是ms
- 完成所有探测通知时发送此消息
- 监听到此消息后可通过routerInfo获取全部统计结果
- 获取到探测结果后需要调用stop方法结束本次探测
- 探测过程中出现错误时发送此消息
- 监听到此消息后,应调用stop方法结束探测
tracker = [[KSYNetTracker alloc] init];
[[NSNotificationCenter defaultCenter]addObserver:self
selector:@selector(handleTrackerNotify:)
name:(KSYNetTrackerOnceDoneNotification)
object:tracker];
[[NSNotificationCenter defaultCenter]addObserver:self
selector:@selector(handleTrackerNotify:)
name:(KSYNetTrackerFinishedNotification)
object:tracker];
[[NSNotificationCenter defaultCenter]addObserver:self
selector:@selector(handleTrackerNotify:)
name:(KSYNetTrackerErrorNotification)
object:tracker];
tracker.action = KSY_NETTRACKER_ACTION_MTR;
[tracker start:@"www.baidu.com"];
for(KSYNetRouterInfo *netInfo in tracker.routerInfo)
{
if(netInfo.ips)
{
j = 0;
for(NSString *ip in netInfo.ips)
{
if(j == 0)
{
infoLog = [infoLog stringByAppendingFormat:@"%-3d", i];
infoLog = [infoLog stringByAppendingFormat:@"%-16s", [ip UTF8String]];
infoLog = [infoLog stringByAppendingFormat:@"%-4d", netInfo.number];
infoLog = [infoLog stringByAppendingFormat:@"%5.1fms", netInfo.tmax];
infoLog = [infoLog stringByAppendingFormat:@"%5.1fms", netInfo.tmin];
infoLog = [infoLog stringByAppendingFormat:@"%5.1fms", netInfo.tavg];
infoLog = [infoLog stringByAppendingFormat:@" %-6.1f", netInfo.tdev];
infoLog = [infoLog stringByAppendingFormat:@"%-4.1f\n", netInfo.loss];
}
else
infoLog = [infoLog stringByAppendingFormat:@" %-16s\n", [ip UTF8String]];
j++;
}
}
i++;
}
[tracker stop];