inet_pton()函数只给出ip或ip和端口号?

时间:2013-01-25 15:36:51

标签: c network-programming

在C中,函数inet_pton()只将ip地址从printble转换为字符串格式,还是也转换了ip地址和端口号?我的意思是,如果我有一个格式为A.B.C.D:E的字符串,其中A.B.C.D是ip而E是端口号,我是否能够使用inet_pton?

3 个答案:

答案 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()地址转换的瑞士刀。