在Unix网络编程中,我们常用到地址转换函数,它将ASCII字符串(如"206.62.226.33")与网络字节序的二进制值(这个值保存在套接口地址结构中)间进行地址的转换. 1.inet_aton.inet_addr和inet_ntoa在点分十进制数串(例如"206.62.226.33")与它的32位网络字节序二进制值间转换IPv4地址. 2.两个较新的函数:inet_pton和inet_ntop对IPv4和IPv6地址都能进行处理. #include<ar…
inet_pton NAME     inet_pton - 将 IPv4 和 IPv6 地址从点分十进制转换为二进制 SYNOPSIS #include <arpa/inet.h> int inet_pton(int af, const char *src, void *dst); DESCRIPTION     该函数将字符串src转换为af地址类型协议簇的网络地址,并存储到dst中.对于af参数,必须为AF_INET或AF_INET6 RETURN VALUE     inet_pton…
一.什么是socket socket可以看成是用户进程与内核网络协议栈的编程接口.socket不仅可以用于本机的进程间通信,还可以用于网络上不同主机的进程间通信. socket API是一层抽象的网络编程接口,适用于各种底层网络协议,如IPv4.IPv6,以及以后要讲的UNIX Domain Socket.然而,各种网络协议的地址格式并不相同,如下图所示: IPv4和IPv6的地址格式定义在netinet/in.h中,IPv4地址用sockaddr_in结构体表示,包括16位端口号和32位IP地…
一.什么是socket socket可以看成是用户进程与内核网络协议栈的编程接口. socket不仅可以用于本机的进程间通信,还可以用于网络上不同主机的进程间通信. socket API是一层抽象的网络编程接口,适用于各种底层网络协议,如IPv4.IPv6,以及以后要讲的UNIX Domain Socket.然而,各种网络协议的地址格式并不相同,如下图所示: IPv4和IPv6的地址格式定义在netinet/in.h中,IPv4地址用sockaddr_in结构体表示,包括16位端口号和32位IP…
IPv4套接字地址结构 struct sockaddr_in { uint8_t sinlen;(4个字节) sa_family_t sin_family;(4个字节) in_port_t sin_port;(2个字节) struct in_addr sin_addr;(4个字节) ]; }; sin_len:整个sockaddr_in结构体的长度,部分Linux内核版本没有该成员 sin_family:指定该地址家族,一般设置为AF_INET(使用TCP,UDP协议) sin_port:端口…
在计算机设计之初,对内存中数据的处理也有不同的方式,(低位数据存储在低位地址处或者高位数据存储在低位地址处),然而,在通信的过程中(ISO/OSI模型和TCP/IP四层模型中),数据被一步步封装(然后加入信息首部),当传到目的段时,被一步步解封,然后获取数据.从上面我们可以看出,数据在传输的过程中,一定有一个标准化的过程,也就是说:从主机a到主机b进行通信,a的固有数据存储-------标准化--------转化成b的固有格式如上而言:a或者b的固有数据存储格式就是自己的主机字节序,上面的标准化…
只适用于IPV4 inet_addr函数将用点分十进制字符串表示的IPv4地址转化为用网络字节序整数表示的IPv4地址. 失败时返回INADDR_NONE. inet_aton函数完成和inet_addr同样的功能,但是将转化结果存储于参数inp指向的地址结构中. 成功返回1,失败返回0. inet_ntoa函数将用网络字节序整数表示的IPv4地址转化为用点分十进制字符串表示的IPv4地址. 该函数内部用一个静态变量存储转化的结果,函数返回值指向该静态内存,因此inet_ntoa是不可重入的.…
一.字符串表示的IP地址需要被转化为整数(二进制数)方能使用 IPv4地址:点分十进制字符串 IPv6地址:十六进制字符串 有时(如记录日志),我们则要把整数(二进制数)表示的IP地址转化为可读的字符串. 二.三个只能用于IPv4地址的函数 /* 点分十进制数串 <----> 长度为32位的网络字节序二进制值 */ in_addr_t inet_addr(const char *strptr); int inet_aton(const char *cp, struct in_addr *inp…
1. 函数用途:数字网络序本地序转换 适用类型:IP地址uint32_t类型.端口号uint16_t类型 #include<netinet/in.h> extern uint32_t ntohl (uint32_t __netlong) __THROW __attribute__ ((__const__)); extern uint16_t ntohs (uint16_t __netshort) __THROW __attribute__ ((__const__)); extern uint3…
inet_addr() 简述:将一个点间隔地址转换成一个in_addr.#include <winsock.h>unsigned long PASCAL FAR inet_addr( const struct FAR* cp);cp:一个以Internet标准“.”间隔的字符串.注释:本函数解释cp参数中的字符串,这个字符串用Internet的“.”间隔格式表示一个数字的Internet地址.返回值可用作Internet地址.所有Internet地址以网络字节顺序返回(字节从左到右排列).In…
注意:结构体之间不能直接进行强制转换, 必须先转换成指针类型才可以进行结构体间的类型转换, 这里需要明确的定义就是什么才叫强制转换. 强制转换是将内存中一段代码以另一种不同类型的方式进行解读, 因此转换的空间必须与源空间一一对应. 而结构体则是由不固定的多种类型变量组合而成, 因此强制转换时并不确定原格式与目标格式确定的对应关系, 例如一个结构体为3个变量, 而另一个则为2个, 那么就无法确定如何分配. 因此最简单的让计算机可以理解的方式就是先将结构体转换成指针, 然后将指针转换成目标格式, 再…
介绍:应该用在网络编程实现每个套接字地址结构.所以主套接字地址结构后前提网络计划编制,地址结构可以在两个方向上发送:从工艺到内核和内核处理.构中的二进制值之间进行转换. 大多数套接字函数都须要一个指向套接字地址结构的指针作为參数.不同协议都有自己的套接字地址结构. 通用的套接字地址结构是sockaddr.IPv4套接字地址结构是定义在头文件<netinet/in.h>中的sockaddr_in,其POSIX定义例如以下: struct in_addr{ in_addr_t s_addr; /*…
1. 套接字地址结构 1.1 IPv4套接字地址结构 IPv4套接字地址结构通常也称为“网际套接字地址结构”,它以sockaddr_in命名,定义在<netinet/in.h>头文件中.下边给出它的定义: 1)struct in_addr专门用来存储IP地址,对于IPv4来说,IP地址为32位无符号整数.其定义如下: 注:in是internet缩写. struct in_addr { unsigned long s_addr; } 具体在<netinet/in.h>的定义是这样子的…
什么是socket: socket可以看成是用户进程与内核网络协议栈的编程接口. socket不仅可以用于本机的进程间通信,还可以用于网络上 不同主机之间的进程通信.IPv4套接口地址结构 struct  sockaddr_in{ uint8_t sin_len;  //整个sockaddr_in结构体的长度 sa_family_t sin_family;  //指定地址家族(不仅可用于tcp ip也可用于UNIX域协议).AF_INET(ipv4) in_port_t sin_port;  /…
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…
inet_ntoa: 功能: 将一个IP转换成一个互联网标准点分格式的字符串. 原型: char FAR * inet_ntoa( struct in_addr in); 返回值: 如果正确,返回一个字符指针,指向一块存储着点分格式IP地址的静态缓冲区(同一线程内共享此内存):错误,返回NULL.   与此相反的函数: inet_aton()是一个将一个字符串IP地址转换为一个32位的网络序列IP地址. 完整描述: int inet_aton(const char *string, struct…
Socket中常见的几个转换函数(htonl,htons,ntohl,ntohs,inet_addr,inet_ntoa) htonl() htons() ntohl() ntohs()及inet_ntoa() inet_addr()的用法 注:其中的h表示“host”,n表示“net”,l表示“long”, s表示“short”a表示“ascii”,ddr表示“in_addr结构体” 现在我们很幸运,因为我们有很多的函数来方便地操作 IP 地址.没有 必要用手工计算它们,也没有必要用"一个so…
inet_addr()   简述:将一个点间隔地址转换成一个in_addr. #include <winsock.h> unsigned long PASCAL FAR inet_addr( const struct FAR* cp); cp:一个以Internet标准“.”间隔的字符串. 注释: 本函数解释cp参数中的字符串,这个字符串用Internet的“.”间隔格式表示一个数字的Internet地址.返回值可用作Internet地址.所有Internet地址以网络字节顺序返回(字节从左到…
accept(接受socket连线) 相关函数 socket,bind,listen,connect 表头文件 #include<sys/types.h> #include<sys/socket.h> 定义函数 int accept(int s,struct sockaddr * addr,int * addrlen); 函数说明 accept()用来接受参数s的socket连线.参数s的socket必需先经bind().listen()函数处理过,当有连线进来时 accept()…
aa 相关函数原型及参数类型: 函数原型:int inet_aton(const char *cp, struct in_addr *inp); in_addr_t inet_addr(const char *cp); in_addr_t inet_network(const char *cp); char *inet_ntoa(struct in_addr in); struct in_addr inet_makeaddr(int net, int host); in_addr_t inet_…
名字和数值地址间进行转换的函数:gethostbyname和gethostbyaddr在主机名字与IPv4地址之间进行转换.getservbyname和getservbyport在服务器名字和端口号之间进行转换.还有两个协议无关的转换函数:getaddrinfo和getnameinfo,分别用于主机名字和IP地址之间以及服务名字和端口之间的转换. 1.gethostbyname函数 通过传入域名或者主机名,返回一个指向hostent结构的指针,该结构中含有所查找主机的所有IPv4地址.这个函数的…
使用SQL函数可以实现许多的功能,下面为您介绍的是字符型IP地址转换成数字IP的SQL函数示例,供您参考,希望对您学习SQL函数能够有所帮助.      /**//*--调用示例       select   dbo.f_IP2Int('192.168.0.11')   select   dbo.f_IP2Int('12.168.0.1')   --*/   CREATE   FUNCTION   [dbo].[f_IP2Int](   @ip   char(15)   )RETURNS   b…
通常,我们用点分十进制字符串表示ipv4地址(192.168.1.1),用十六进制字符串表示ipv6地址(fe80::20c:29ff:fee9:4bcc). ipv4转换函数 #include <arpa/inet.h> // 字符串ip地址转换成网络字节序ip地址,地址存储在ip指向的结构中,成功返回1,否则0 int inet_aton(const char *cp, struct in_addr *ip); // 功能同上,失败返回INADDR_NONE,不推荐使用 in_addr_t…
地址格式转换函数:它们在ASCII字符串(人们比较喜欢用的格式)与网络字节序的二进制值(此值存于套接口地址结构中)间转换地址. 1.inet_aton.inet_addr.inet_ntoa inet_aton.inet_addr和inet_ntoa在点分十进制数串(例如,"206.168.112.96")与它的32位网络字节序二进制值间转换IPv4地址. #include <arpa/inet.h> int inet_aton(const char *strptr, st…
这里主要介绍一下 IPV4 / IPV6 在 PHP / MySQL 中如何转换.以及中间容易碰到的一些问题. 首先介绍两个函数: ip2long:将 IPV4 的字符串互联网协议转换成长整型数字 int ip2long ( string $ip_address ) long2ip:将长整型转化为字符串形式带点的互联网标准格式地址(IPV4) string long2ip ( int $proper_address ) 问题一:MySQL 中如何存储IP地址. IPV4 地址长度32位,有 2^…
1.域名系统 程序中只使用主机名和服务名的好处是,如果IP或端口变化,只需要改变映射关系,不需要重新编译程序. 1.1 资源记录 DNS的条目为资源记录,有用的项如下: A IPv4地址 AAAA IPv6地址 CNAME 规范名字 如: ftp.unpbook.com 的 CNAME 为 linux.unpbook.com www.unpbook.com 的 CNAME 为 linux.unpbook.com 1.2 解析器和名字服务器 程序通过调用解析器库函数,调用DNS服务.常用的函数为…
名字和地址转换 系列文章导航:<Unix 网络编程>笔记 域名系统 简介 域名系统主要用于主机名字和 IP 地址之间的映射.主机名可以是: 简单名字,如:centos01 全限定域名(FQDN[1]),如:xxx.com 资源记录 记录 作用 A 指向IPv4 AAAA 指向IPv6 PTR 把IP地址映射为主机名 MX 邮件记录 CNAME 为二级域名指定域名或IP 解析器和名字服务器 DNS DNS替代方法 如果使用 DNS 查找主机名,则使用 /etc/resolv.conf 指定的 D…
代码如下: # -*- coding: utf-8 -*- import socket from binascii import hexlify def convert_ip4_address(): '''如果要使用低层网络函数,有时普通的字符串形式 的IP地址并不是很有用,需要把他们转换成打包后的32位二进制格式''' for ip_addr in ['127.0.0.1', '192.168.0.1']: # 把字符串形式的IP地址转换成打包后的32位二进制格式 packed_ip_addr…
Mysql中对于unix时间戳的转换还是挺方便的, 1.转换为时间戳 select unix_timestamp('2013-07-15 10-06-07') 如果参数为空,则为当前时间 2.转换为时间 select from_unixtime(time),time单位是秒.或者select from_unixtime(time,format),time单位是秒. 以下说明符可用在 format 字符串中: 说明符 说明 %a 工作日的缩写名称 (Sun..Sat) %b 月份的缩写名称 (Ja…
python整数与IP地址转换 [转] 我们有时会将一个整数与IP地址进行互换,用python代码实现很简单将一个整数如2000000,变为一个IP地址的方式 >>> import socket >>> import struct >>> int_ip = 123456789 >>> ip = socket.inet_ntoa(struct.pack('I',socket.htonl(int_ip)))      #int to ip…