【问题标题】:inet_pton() function gives only ip or ip and port number?inet_pton() 函数只给出 ip 或 ip 和端口号?
【发布时间】:2013-01-26 00:09:39
【问题描述】:

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

【问题讨论】:

    标签: c network-programming


    【解决方案1】:

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

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

    【讨论】:

      【解决方案2】:

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

      【讨论】:

        【解决方案3】:

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

        【讨论】:

        • 这是个好建议,但您仍然需要自己拆分端口号。
        猜你喜欢
        • 2019-08-16
        • 1970-01-01
        • 2023-04-06
        • 2012-03-03
        • 2019-01-21
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多