c - inet_pton() 函数仅提供 IP 或 IP 和端口号



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

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

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

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

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

最新更新