gpt4 book ai didi

iphone - 如何读取从 iPhone 中的 sysctlbyname() 检索到的缓冲区数据?

转载 作者:行者123 更新时间:2023-11-28 22:42:14 25 4
gpt4 key购买 nike

我正在尝试使用 sysctlbyname() 在 iphone 中获取 TCP 开放端口列表。

 sysctlbyname(const char *name, void *oldp, size_t *oldlenp, void *newp,
size_t newlen);

.

 #include <sys/sysctl.h>

size_t len = 0;
if (sysctlbyname("net.inet.tcp.pcblist", 0, &len, 0, 0) < 0) {
perror("sysctlbyname");
} else {
char *buf = malloc(len);
//printf("%d",sizeof(buf));
sysctlbyname("net.inet.tcp.pcblist", buf, &len, 0, 0);
NSData *data = [NSData dataWithBytesNoCopy:buf length:len];
NSLog(@"data = %@", data);

//printf("%d",sizeof(buf));
//printf("%s",buf);
}

信息被复制到oldp指定的缓冲区中。

输出::

data = <18000000 34000000 d8160000 00000000 7d760000 00000000 0c020000 00000000 00000000 00000000 00000000 0050c598 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 c2160000 00000000 40008000 00000000 01400000

缓冲区中充满了数据。但我无法以可读格式打印数据。将此数据转换为 NSString 无济于事,因为内部缓冲区有其自己的结构。

有人知道如何从该数据中获取 TCP 开放端口列表作为输出吗?

谢谢。

最佳答案

复制netstat code来自 BSD 源。

查看main.c中的printproto()函数

这将探索与此缓冲区相关的所有内容以及如何获取 TCP 端口列表。

谢谢。

关于iphone - 如何读取从 iPhone 中的 sysctlbyname() 检索到的缓冲区数据?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14192241/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com