cha*_*hao 4 iphone port objective-c
嗨我想通过objective-c获取iphone上的所有tcp/udp开放端口状态列表?像Linux上的netstat,你知道如何实现它,或者有任何API可以做到这一点?谢谢.
你无法netstat在iPhone上运行(除非你越狱),但你可以做到这netstat一点.看看函数protopr中的netstat源代码.我核实,可以调用sysctlbyname与"net.inet.tcp.pcblist"作为名称并取回一串数据.我没有尝试像netstat这样解释数据.
测试用例:
size_t len = 0;
if (sysctlbyname("net.inet.tcp.pcblist", 0, &len, 0, 0) < 0) {
perror("sysctlbyname");
} else {
char *buf = malloc(len);
sysctlbyname("net.inet.tcp.pcblist", buf, &len, 0, 0);
NSData *data = [NSData dataWithBytesNoCopy:buf length:len];
NSLog(@"data = %@", data);
}
Run Code Online (Sandbox Code Playgroud)
在运行iOS 5.0的iPad 2上输出:
2011-11-17 19:59:34.712 keyboardtest[29423:707] data = <18000000 2c000000 9e2a0900
00000000 c60e5d00 00000000 0c020000 00000000 00000000 00000000 00000000 d4d3d4d2
00000000 00000000 ...
Run Code Online (Sandbox Code Playgroud)
还有更多我被截断了.
确保您初始化len为0.另外,你不能只是把内容buf在NSString,好像它是一个C字符串.不是.这是您必须解释的二进制数据,就像netstat它一样.
大概你想要解释数据.您需要阅读我在上面链接protopr的netstat源代码中的函数.使用的数据结构protopr在<netinet/in_pcb.h>和<netinet/tcp_var.h>,以及其他头文件中声明/usr/include/netinet.这些头文件包含在iOS SDK中(至少从iOS 7.0开始),因此您可以使用它们.
| 归档时间: |
|
| 查看次数: |
6143 次 |
| 最近记录: |