在Objective-C中获取网络流量发送和接收字节的最简单方法是什么?
答案 0 :(得分:3)
这并不容易,它来自C而不是Objective-C,但您需要的所有信息都存储在 getifaddrs(3)返回给您的接口地址的ifa_data字段中。您可以在libtop_p_networks_sample函数的source code到'top'实用程序中查看如何访问它的示例。
答案 1 :(得分:1)
cleaneast解决方案可能是cdespinosa的。
替代可能是
1 /在NSTask中包含netstat调用
diciu$ netstat -bi en0
Name Mtu Network Address Ipkts Ierrs Ibytes Opkts Oerrs Obytes Coll
en0 1500 <Link#4> xx:xx:xx:xx:xx 86259 0 86175096 64485 0 10090152 0
2 /读取sysctl变量可以获得一些网络统计信息,但这些似乎与特定接口无关:
diciu$ sysctl -b net.inet.ip.stats > /tmp/tt
diciu$ hexdump /tmp/tt
0000000 d2 4a 01 00 00 00 00 00 00 00 00 00 00 00 00 00
0000010 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
在转储中“d2 4a 01 00”是总ip包(即0x14ad2 = 84690包)。
您获得的结构在netinet / ip_var.h中定义:
struct ipstat {
u_int32_t ips_total; /* total packets received */
[..]