ZBLOG

inet_pton使用 写一个C代码例子

当你使用 inet_pton 函数时,可以将一个点分十进制的 IPv4 或 IPv6 地址转换为二进制格式。下面是一个简单的 C 代码例子,演示了如何使用 inet_pton 函数:

#include <stdio.h>
#include <stdlib.h>
#include <arpa/inet.h>

int main() {
    const char* ipv4Address = "192.168.0.1";
    const char* ipv6Address = "2001:0db8:85a3:0000:0000:8a2e:0370:7334";

    struct in_addr addr4;
    struct in6_addr addr6;

    // 将 IPv4 地址转换为二进制格式
    if (inet_pton(AF_INET, ipv4Address, &addr4) <= 0) {
        perror("Invalid IPv4 address");
        return 1;
    }

    // 将 IPv6 地址转换为二进制格式
    if (inet_pton(AF_INET6, ipv6Address, &addr6) <= 0) {
        perror("Invalid IPv6 address");
        return 1;
    }

    printf("IPv4 address in binary format: %08x\n", addr4.s_addr);
    
    printf("IPv6 address in binary format: ");
    for (int i = 0; i < sizeof(addr6.s6_addr); ++i) {
        printf("%02x", addr6.s6_addr[i]);
    }
    
    return 0;
}

在此示例中,我们首先定义了一个 IPv4 地址和一个 IPv6 地址作为输入。然后,我们创建了适当类型的结构体 in_addrin6_addr 来存储转换后的二进制地址。

接下来,我们使用 inet_pton 函数分别将 IPv4 地址和 IPv6 地址转换为二进制格式。如果转换失败,则会输出错误消息并返回。

最后,我们打印出转换后的二进制地址。对于 IPv4 地址,我们可以通过 addr4.s_addr 访问,它是一个 32 位无符号整数。对于 IPv6 地址,我们需要逐个字节打印出来。

请注意,在运行此代码时,请确保在编译命令中包含 -lsocket -lnsl 这两个选项以链接所需的库。


内容由零声教学AI助手提供,问题来源于学员提问

本站部分文章来源于网络,版权归原作者所有,如有侵权请联系站长删除。
转载请注明出处:https://sdn.0voice.com/?id=2490

分享:
扫描分享到社交APP
上一篇
下一篇
发表列表
游客 游客
此处应有掌声~
评论列表

还没有评论,快来说点什么吧~

联系我们

在线咨询: 点击这里给我发消息

微信号:3007537140

上班时间: 10:30-22:30

关注我们
x

注册

已经有帐号?