转自:http://www.cnblogs.com/s7vens/archive/2011/12/12/2284964.html

Linux下这2个IP地址转换函数,可以在将IP地址在“点分十进制”和“整数”之间转换

而且,inet_pton和inet_ntop这2个函数能够处理ipv4和ipv6。算是比较新的函数了。

inet_pton函数原型如下[将"点分十进制" -> "整数"]

#include <sys/types.h>#include <sys/socket.h>#include <arpa/inet.h>int inet_pton(int af, const char *src, void *dst);//这个函数转换字符串到网络地址,第一个参数af是地址族,转换后存在dst中

inet_pton是inet_addr的扩展,支持的多地址族有下列:
af = AF_INET
src为指向字符型的地址,即ASCII的地址的首地址(ddd.ddd.ddd.ddd格式的),函数将该地址转换为in_addr的结构体,并复制在*dst中
af = AF_INET6
src为指向IPV6的地址,函数将该地址转换为in6_addr的结构体,并复制在*dst中
如果函数出错将返回一个负值,并将errno设置为EAFNOSUPPORT,如果参数af指定的地址族和src格式不对,函数将返回0。

inet_ntop函数原型如下[将"点分十进制" -> "整数"]

#include <sys/types.h>#include <sys/socket.h>#include <arpa/inet.h>const char *inet_ntop(int af, const void *src, char *dst, socklen_t cnt);//这个函数转换网络二进制结构到ASCII类型的地址,参数的作用和上面相同,只是多了一个参数socklen_t cnt,//他是所指向缓存区dst的大小,避免溢出,如果缓存区太小无法存储地址的值,则返回一个空指针,并将errno置为ENOSPC

下面是例子:

#include <stdio.h>#include <stdlib.h>#include <string.h>#include <unistd.h>#include <sys/socket.h>#include <netinet/in.h>int main (void){  char IPdotdec[20]; // 存放点分十进制IP地址  struct in_addr s;  // IPv4地址结构体  // 输入IP地址  printf("Please input IP address: ");  scanf("%s", &IPdotdec);  // 转换  inet_pton(AF_INET, IPdotdec, (void *)&s);  printf("inet_pton: 0x%x\n", s.s_addr); // 注意得到的字节序  // 反转换  inet_ntop(AF_INET, (void *)&s, IPdotdec, 16);  printf("inet_ntop: %s\n", IPdotdec);}

inet_pton, inet_ntop相关推荐

  1. Linux函数--inet_pton / inet_ntop

    http://blog.csdn.net/lindyl/article/details/10427925 inet_pton 和 inet_ntop Linux下这2个IP地址转换函数,可以在将IP地 ...

  2. IP地址转换函数——inet_pton inet_ntop inet_aton inet_addr inet_ntoa

    inet_pton NAME     inet_pton - 将 IPv4 和 IPv6 地址从点分十进制转换为二进制 SYNOPSIS #include <arpa/inet.h>int ...

  3. java inet aton_地址转换函数:inet_aton inet_ntoa inet_addr和inet_pton inet_ntop

    在Unix网络编程中,我们常用到地址转换函数,它将ASCII字符串(如"206.62.226.33")与网络字节序的二进制值(这个值保存在套接口地址结构中)间进行地址的转换. 1. ...

  4. inet aton在java_地址转换函数:inet_aton inet_ntoa inet_addr和inet_pton inet_ntop

    在Unix网络编程中,我们常用到地址转换函数,它将ASCII字符串(如"206.62.226.33")与网络字节序的二进制值(这个值保存在套接口地址结构中)间进行地址的转换. 1. ...

  5. htonl htons ntohl ntohs inet_pton inet_ntop

    字节序转换函数 uint32_t htonl(uint32_t hostlong)主机字节序到网络字节序长整型转换 uint32_t htons(uint16_t hostshort)主机字节序到网络 ...

  6. htons/ntohs、inet_aton/inet_ntoa、inet_pton/inet_ntop函数详解

    在介绍htons等函数之前,必须先介绍网络字节序与主机字节序 网络字节序和主机字节序 网络字节顺序NBO(Network Byte Order): 按从高到低的顺序存储,在网络上使用统一的网络字节顺序 ...

  7. LinuxC下获取UDP包中的路由目的IP地址和头标识目的地址

    在接受到UDP包后,有时候我们需要根据所接收到得UDP包,获取它的路由目的IP地址和头标识目的地址. (一)主要的步骤: 在setsockopt中设置IP_PKTINFO,然后通过recvmsg来获取 ...

  8. linux u8 头文件,2019-12-11 转载TCP/IP编程常用C语言头文件

    网络编程的头文件(这里所有的头文件都在/usr/include目录下面) 经常被一些头文件搞大,不知到到哪个头文件去找结构.这里做个总结 ---------------- 版权声明:本文为CSDN博主 ...

  9. Socket套接字的速率控制(linux)

    发送端系统:ubuntu18.04 接收端系统:ubuntu18.04 最近要做一些socket的实验,我对socket也不大了解,不过socket还算是比较好学的,算是在应用层和传输层中间,给你提供 ...

最新文章

  1. 网络故障排除连载之一:常用排除方法综述
  2. 三种ajax解析模式!
  3. 我们工作到底为了什么?
  4. SAP成本会计分录大全
  5. charles 安装 ssl_charles抓包配置
  6. Java 最常见 200+ 面试题全解析:面试必备
  7. was修改堆内存_WAS问题解决思路
  8. 不止是安防 红外摄像机在应急产业的应用
  9. Python的安装部署
  10. C++---堆代码实现
  11. Gensim进阶教程
  12. FormsAuthentication使用指南
  13. 数据归一化和常用的归一化方法
  14. xp计算机共享能否指定用户,XP怎么设置局域网共享?
  15. 首次登录强制修改密码
  16. 声卡驱动win7安装失败解决方法
  17. Mac下安装homebrew(解决error: RPC failed; curl 56 LibreSSL SSL_read: SSL_ERROR_SYSCALL)
  18. 计算机组成原理 — GPU 图形处理器
  19. TextCnn原理及实践
  20. 层次分析法(Analytic Hierarchy Process)

热门文章

  1. 004-JQuery属性
  2. 20162303《程序设计与数据结构》第一周学习总结
  3. KingPaper初探ThinkPHP3.1.2之扩展函数库和类库的使用(四)
  4. 【J2EE设计模式】模型-视图-控制器模式(MVC模式)
  5. linux网络唤醒,如何在Ubuntu Server 18.04中启用网络唤醒(WOL)
  6. mybatis-plus分页查询_SpringBoot + MyBatisPlus 快速入门
  7. java 通道 双向原理_Java-NIO(四):通道(Channel)的原理与获取
  8. 力扣两数之和 II - 输入有序数组
  9. Java LocalDateTime类| 带示例的getDayOfWeek()方法
  10. java删除指定索引元素_将对象/元素添加到列表中的Java指定索引处