在C中,函数inet_pton()只将ip地址从printble转换为字符串格式,还是也转换了ip地址和端口号?我的意思是,如果我有一个格式为A.B.C.D:E的字符串,其中A.B.C.D是ip而E是端口号,我是否能够使用inet_pton?
答案 0 :(得分:3)
不,它不处理端口号。 man page准确指定了对IPv4地址的期望:
src
指向包含IPv4网络地址的字符串 点分十进制格式,“ddd.ddd.ddd.ddd”,其中ddd是十进制数 最多三位数,范围为0到255.转换地址 到struct in_addr
并复制到dst
,其长度必须为sizeof(struct in_addr)
(4)个字节(32位)。
答案 1 :(得分:1)
您必须自己拆分端口号。这是相当有问题的,因为你这样做的方式取决于地址是ipv4还是ipv6。我相信这个问题是许多unix实用程序使用-p
选项而不是:port
语法来指定端口的原因。
答案 2 :(得分:1)
使用getaddrinfo()
地址转换的瑞士刀。