0

在 C 中,函数 inet_pton() 是否仅将 ip 地址从 printble 转换为字符串格式,或者它也转换 ip 地址和端口号?我的意思是,如果我有一个格式为 ABCD:E 的字符串,其中 ABCD 是 IP,E 是端口号,我可以使用 inet_pton 吗?

4

3 回答 3

3

不,它不处理端口号。手册页准确地指定了它对 IPv4 地址的期望:

src指向包含点分十进制格式的 IPv4 网络地址的字符串,“ddd.ddd.ddd.ddd”,其中 ddd 是 0 到 255 范围内最多三位的十进制数。地址转换为struct in_addr并复制到dst,其长度必须为sizeof(struct in_addr)(4) 个字节(32 位)。

于 2013-01-25T15:42:50.230 回答
3

您必须自己拆分端口号。这是相当有问题的,因为您执行此操作的方式取决于地址是 ipv4 还是 ipv6。我相信这个问题是许多 unix 实用程序使用-p选项而不是:port语法来指定端口的原因。

于 2013-01-25T15:58:54.183 回答
1

使用getaddrinfo()地址转换的瑞士刀。

于 2013-01-25T16:09:39.830 回答