ios 截取手机流量_ios获取流量和获取ip地址

#include

[ifaddrs.h]

#include

[sys/socket.h]

#include

[net/if.h]

#include [stdio.h]

//把

[] 替换为 尖<>括号

+(int)get3GFlowIOBytes{

struct

ifaddrs

*ifa_list= 0,

*ifa;

if

(getifaddrs(&ifa_list)==

-1)

{

return

0;

}

uint32_t

iBytes = 0;

uint32_t

oBytes = 0;

for

(ifa = ifa_list; ifa; ifa = ifa->ifa_next)

{

if

(AF_LINK

!= ifa->ifa_addr->sa_family)

continue;

if

(!(ifa->ifa_flags&

IFF_UP)

&&!(ifa->ifa_flags

& IFF_RUNNING))

continue;

if

(ifa->ifa_data

== 0)

continue;

if

(!strcmp(ifa->ifa_name,"pdp_ip0"))

{

struct

if_data

*if_data = (struct

if_data*)ifa->ifa_data;

iBytes +=

if_data->ifi_ibytes;

oBytes +=

if_data->ifi_obytes;

NSLog(@"%s

:iBytes is %d, oBytes is %d",ifa->ifa_name,

iBytes, oBytes);

}

}

freeifaddrs(ifa_list);

return

iBytes + oBytes;

}

+(long)getWifiInterfaceBytes{

struct

ifaddrs

*ifa_list = 0,

*ifa;

if

(getifaddrs(&ifa_list)

== -1)

{

return

0;

}

uint32_t

iBytes = 0;

uint32_t

oBytes = 0;

for

(ifa = ifa_list; ifa; ifa = ifa->ifa_next)

{

if

(AF_LINK

!= ifa->ifa_addr->sa_family)

continue;

if

(!(ifa->ifa_flags

& IFF_UP)

&& !(ifa->ifa_flags

& IFF_RUNNING))

continue;

if

(ifa->ifa_data

== 0)

continue;

if

(strncmp(ifa->ifa_name,

"lo",

2))

{

struct

if_data

*if_data = (struct

if_data

*)ifa->ifa_data;

iBytes +=

if_data->ifi_ibytes;

oBytes +=

if_data->ifi_obytes;

NSLog(@"%s

:iBytes is %d, oBytes is %d", ifa->ifa_name,

iBytes, oBytes);

}

}

freeifaddrs(ifa_list);

return

iBytes+oBytes;

}

#include

[ifaddrs.h]

#include

[arpa/inet.h]

//这里同样替换下  发布后是网页 所以<> 这种特殊符号会被和谐掉 哎

- (NSString

*)getIPAddress {

NSString

*address = @"error";

struct

ifaddrs

*interfaces = NULL;

struct

ifaddrs

*temp_addr = NULL;

int

success = 0;

// retrieve the current interfaces -

returns 0 on success

success = getifaddrs(&interfaces);

if

(success == 0)

{

//

Loop through linked list of interfaces

temp_addr = interfaces;

while(temp_addr

!= NULL)

{

if(temp_addr->ifa_addr->sa_family

== AF_INET)

{

// Check if interface is en0 which is the

wifi connection on the iPhone

if([[NSString

stringWithUTF8String:temp_addr->ifa_name]

isEqualToString:@"en0"])

{

//

Get NSString from C String

address = [NSString

stringWithUTF8String:inet_ntoa(((struct

sockaddr_in

*)temp_addr->ifa_addr)->sin_addr)];

}

}

temp_addr

= temp_addr->ifa_next;

}

}

// Free memory

freeifaddrs(interfaces);

return

address;

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值