htonl htons ntohl ntohs inet_pton inet_ntop

字节序转换函数

  • uint32_t htonl(uint32_t hostlong)主机字节序到网络字节序长整型转换
  • uint32_t htons(uint16_t hostshort)主机字节序到网络字节序短整型转换
  • uint32_t ntohl(uint32_t netlong)网络字节序到主机字节序长整型转换
  • uint32_t ntohs(uint16_t netshort)网络字节序到主机字节序短整型转换

字符串ip地址/二进制ip地址转换

  • int inet_aton(const char *cp, struct in_addr *inp)

    inet_aton函数将cp中点分十进制字符串类型的ip地址转换成二进制ip地址,保存在struct in_addr中。如果输入的地址非法,返回值为0。

  • in_addr_t inet_addr(const char *cp)

    inet_addr函数将cp中点分十进制字符串类型的ip地址转换为二进制的ip地址(以网络字节序表示)。如果输入的地址非法,返回值为-1,否则返回转换后的ip地址。

  • char *inet_ntoa(struct in_addr in)

    inet_ntoa函数将in_addr结构表示的ip地址转换为点分十进制的字符串。

  • int inet_pton(int af, const char *psrc, void *pdst)

    inet_pton函数将字符串类型的ip地址转换为二进制类型。第一个参数表示网络类型协议族,IPv4值为AF_INET;第二个参数表示需要转换的字符串;第三个参数表示转换后的结果,在IPv4下指向结构struct in_addr的指针。

    当函数返回值为-1时,表示af协议族不支持,当函数返回0时,表示psrc不是合法的ip地址,当函数返回正数时,表示转换成功。

    struct in_addr ip;
    char ipstr[] = "192.168.1.2";
    int err = 0;
    err = inet_pton(AF_INET, ipstr, &ip);
    
  • const char *inet_ntop(int af, const void *psrc, char *pdst, socklen_t cnt)

    inet_ntop函数将二进制ip地址转换为字符串。第一个参数表示网络类型协议族;第二个参数表示需要转换的二进制ip地址;第三个参数为转换结果保存的缓存区;第四个参数为缓存区的大小。

    inet_ntop函数返回指向pdst的指针,当发生错误时,返回NULL。

    struct in_addr ip;
    char str[ADDR_STRLEN];
    char *p = inet_ntop(AF_INET, (void *)&ip, str, ADDR_STRLEN);
    
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值