3. IP地址转换函数
一、字符串表示的IP地址需要被转化为整数(二进制数)方能使用
IPv4地址:点分十进制字符串
IPv6地址:十六进制字符串
有时(如记录日志),我们则要把整数(二进制数)表示的IP地址转化为可读的字符串。
二、三个只能用于IPv4地址的函数
/* 点分十进制数串 <----> 长度为32位的网络字节序二进制值 */
in_addr_t inet_addr(const char *strptr);
int inet_aton(const char *cp, struct in_addr *inp)
char* inet_ntoa(struct in_addr in);
1. inet_ntoa是不可重入的,其内部用一个静态变量存储转化的结果,返回值指向该静态内存
char *pAddr1 = inet_ntoa("1.2.3.4");
char *pAddr2 = inet_ntoa("10.194.71.60");
printf("address 1: %s\n", pAddr1);
printf("address 2: %s\n", pAddr2);
/*  上面代码的输出结果  */
// address 1: 10.194.71.60
// address 2: 10.194.71.60
2. inet_addr存在缺陷,现已被废弃,可用inet_aton来代替它
三、同时适用于IPv4和IPv6地址的函数
int inet_pton(int family, const char *src, void *dst);
const char* inet_ntop(int family, const void *src, char *dst, socklen_t len);
参数len用于指定目标存储单元的大小,以免该函数溢出其调用者的缓冲区,有两个宏能帮助我们指定这个大小
#define INET_ADDRSTRLEN 16 // 用于IPv4
#define INET6_ADDRSTRLEN 46 // 用于IPv6
四、余音绕梁
1. 推荐使用inet_pton和inet_ntop函数
3. IP地址转换函数的更多相关文章
- 【网络编程一】主机字节序与网络字节序以及ip地址转换函数
		
在计算机设计之初,对内存中数据的处理也有不同的方式,(低位数据存储在低位地址处或者高位数据存储在低位地址处),然而,在通信的过程中(ISO/OSI模型和TCP/IP四层模型中),数据被一步步封装(然后 ...
 - IP地址转换函数
		
只适用于IPV4 inet_addr函数将用点分十进制字符串表示的IPv4地址转化为用网络字节序整数表示的IPv4地址. 失败时返回INADDR_NONE. inet_aton函数完成和inet_ad ...
 - Linux C++ - IP地址转换函数
		
1. 函数用途:数字网络序本地序转换 适用类型:IP地址uint32_t类型.端口号uint16_t类型 #include<netinet/in.h> extern uint32_t nt ...
 - IP地址转换函数——inet_pton  inet_ntop inet_aton inet_addr inet_ntoa
		
inet_pton NAME inet_pton - 将 IPv4 和 IPv6 地址从点分十进制转换为二进制 SYNOPSIS #include <arpa/inet.h> in ...
 - 套接字编程相关函数(1:套接字地址结构、字节序转换、IP地址转换)
		
1. 套接字地址结构 1.1 IPv4套接字地址结构 IPv4套接字地址结构通常也称为“网际套接字地址结构”,它以sockaddr_in命名,定义在<netinet/in.h>头文件中.下 ...
 - [转]字符型IP地址转换成数字IP的SQL函数
		
使用SQL函数可以实现许多的功能,下面为您介绍的是字符型IP地址转换成数字IP的SQL函数示例,供您参考,希望对您学习SQL函数能够有所帮助. /**//*--调用示例 sele ...
 - Linux 网络编程详解一(IP套接字结构体、网络字节序,地址转换函数)
		
IPv4套接字地址结构 struct sockaddr_in { uint8_t sinlen;(4个字节) sa_family_t sin_family;(4个字节) in_port_t sin_p ...
 - ip地址转换
		
通常,我们用点分十进制字符串表示ipv4地址(192.168.1.1),用十六进制字符串表示ipv6地址(fe80::20c:29ff:fee9:4bcc). ipv4转换函数 #include &l ...
 - 字符串-06. IP地址转换
		
/* * Main.c * D6-字符串-06. IP地址转换 * Created on: 2014年8月19日 *******测试通过******** *转载:http://blog.csdn.ne ...
 
随机推荐
- Extjs6  组件浅谈
			
一.Component组件 一个 Ext JS 应用的界面由一个或多个叫做 组件的控件组成. 所有的组件都是 Ext.Component 类的子类,这个类可以允许参与包含实例化.渲染.自动大小和位置以 ...
 - python新建一个表格xls并写入数据
			
# -*- coding:utf-8 -*- import xlwt workbook = xlwt.Workbook() # 新建一个工作簿 sheet = workbook.add_sheet(& ...
 - 在mac上使用tar.gz安装mysql
			
官方: download: https://dev.mysql.com/downloads/mysql/ mysql参考文档:https://dev.mysql.com/doc/ 环境: macOS ...
 - filter 图片滤镜的各种设置
			
filter 图片滤镜 给当前元素加滤镜_改变它的明亮度 定义:filter 属性定义了元素(通常是<img>)的可视效果(例如:模糊与饱和度).作用在图片上或元素上.div{ },或 d ...
 - PHP程序员的技术成长规划 第一阶段:基础阶段
			
第一阶段:基础阶段(基础PHP程序员) 重点:把LNMP搞熟练(核心是安装配置基本操作)目标:能够完成基本的LNMP系统安装,简单配置维护:能够用PHP源码做基本的简单系统的PHP开发:能够在PHP中 ...
 - Delphi无边框Form拖动
			
用Delphi做登陆窗口,如果使用无边框Form,想要拖动窗口,可以在某个控件的OnMouseDown事件中写下以下代码 ReleaseCapture; Perform(WM_SYSCOMMAND, ...
 - 嵌入式C语言自我修养 08:变参函数的格式检查
			
8.1 属性声明:format GNU 通过 __atttribute__ 扩展的 format 属性,用来指定变参函数的参数格式检查. 它的使用方法如下: __attribute__(( forma ...
 - 20155316 2016-2017-2《Java程序设计》课程总结
			
每周作业 链接汇总 预备作业1:学习调查(专业期望 师生关系 代码行数) 预备作业2:"做中学"调查(日常技能 C语言 Java 公文写作) 预备作业3:Linux系统与虚拟机学习 ...
 - springboot之oauth2
			
一.OAuth2.0是OAuth协议的延续版本,但不向后兼容OAuth 1.0即完全废止了OAuth1.0. OAuth 2.0关注客户端开发者的简易性.要么通过组织在资源拥有者和HTTP服务商之间的 ...
 - set get方法诡异的空指针异常
			
发现原来是我的bean没有实例化 我的一直都是这么实例化的: UserEntity userEntity = null;难怪每次用不了set方法 原来是没有实例化 实例化之后就能正常使用了 UserE ...