inet_pton, inet_ntop】的更多相关文章

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…
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…
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…
在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…
#include <arpa/inet.h> int inet_pton(int family,const char * strptr,void * addrptr); 返回:--成功, --输入不是有效的表达格式 , ---出错 const char * inet_ntop(int family,const void * addrptr,char * strptr,size_t len); 其中len =sizeof(* strptr) 返回: 指向结果的指针--成功 , NULL--出错…
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…
文章最开头介绍了 获取时间的C/S 模型的代码, 还用了实现了IPV6的版本 unix 介绍了errno值,以及在多进程/多线程中的问题 多线程中不用全局errno,而是用返回值 处理error 详细见第26章 //可以这么写 int n; if( (n=pthread_mutex_lock(&ndone_mutex)) !=0 ) errno=n,err_sys("ptherad_mutex_lock error");// 逗号分割,不用{} 花括号 //当然我们也可以封装下…
网络相关的东西差点儿都是建立在套接字之上.所以这个内容对于程序猿来说还是蛮重要的啊. 事实上套接字也就是一个特殊的设备文件而已,我始终不能明确为什么要叫套接字.这么个奇怪的名字.只是还是就这样算了吧.关键还是编程上.因为其重要性,我还是写的具体一点吧. 一.套接字 核心函数: int  socket(int domain,int type,int protocol); 这个函数在通信域domain中创建一个类型为type,使用协议protocol的套接字.而且返回一个描写叙述字,也就是相当于打开…
inet_addr() 将一个字符串格式的ip地址转换成一个uint32_t数字格式 但是需要注意的是, 这个函数的返回值在大小端机器上是不同的 例如输入一个"192.168.0.1"的字符串, 在内存中的排列(字节从低到高) 0xC0, 0xA8 ,0x00 ,0x4A. 那么在小端序机器上,返回的数字就是0x4a00a8c0 , 而在大端序机器上则是0xc0a8004a 同样 inet_pton  inet_ntop 也存在这个问题…
开始了新篇章:Linux网络编程. 基础知识: 套接字概念 Socket本身有"插座"的意思,在Linux环境下,用于表示进程间网络通信的特殊文件类型.本质为内核借助缓冲区形成的伪文件. 既然是文件,那么理所当然的,我们可以使用文件描述符引用套接字.与管道类似的,Linux系统将其封装成文件的目的是为了统一接口,使得读写套接字和读写文件的操作一致.区别是管道主要应用于本地进程间通信,而套接字多应用于网络进程间数据的传递. 套接字的内核实现较为复杂,不宜在学习初期深入学习. 在TCP/I…
在接受到UDP包后,有时候我们需要根据所接收到得UDP包,获取它的路由目的IP地址和头标识目的地址. (一)主要的步骤: 在setsockopt中设置IP_PKTINFO,然后通过recvmsg来获取struct in_pktinfo(struct in_pktinfo是struct msghdr中msg_control的成员).in_pktinfo 结构体(如下所示),我们可以从in_pktinfo中获取路由目的地址(destination address of the packet).头标识…
ISO(国际标准化组织)--->网络体系结构标准 OSI模型 OSI 七层模型 应用层 :提供用户服务,具体内容由特定程序规定 表示层 :提供数据的压缩解压和加密等 会话层 :建立程序级的连接,决定使用什么样的传输服务 传输层 :提供合适的通信服务,流量控制 网络层 : 路由选择,网络互联,分组传输 链路层 : 提供链路交换,具体消息发送 物理层 : 物理硬件,接口 OSI 模型优点 : 将功能分开,降低网路传输中的耦合度,每一部分完成自己的功能,开发更加清晰. 高内聚 :使模块功能单一,不混杂…
 在之前的一篇博客<python网络编程基础>中介绍了socket.socket()函数及其应用,其实socket模块中还有很多属性可供网络应用程序使用.这里将详细讲解一下socket模块中一些常用到的函数/属性. 1. socket模块属性 下面列出了一些常用的socket模块属性.(引用自<python核心编程>) 更详细的函数说明,请看python官方文档中的socket模块:https://docs.python.org/2/library/socket.html   2.…
socket的基本操作: (1)socket()函数: (2)bind()函数: (3)listen(),connect()函数: (4)accept()函数: (5)socket中的发送与接收函数: (6)close()函数: (7)服务器上调用socket函数: (8)客户端调用socket函数: (9)IP地址转换函数:inet_pton, inet_ntop, inet_addr: (1)socket()函数: 1)函数原型: int socket(int domain, int typ…
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_…
最近根据项目需要,要在产品中添加对IpV6的支持,因此研究了一下IPV6的相关内容,Ipv6 与原来最直观的改变就是地址结构的改变,IP地址由原来的32位扩展为128,这样原来的地址结构肯定就不够用了,根据微软的官方文档,只需要对原来的代码做稍许改变就可以适应ipv6. 修改地址结构 Windows Socket2 针对Ipv6的官方描述 根据微软官方的说法,要做到支持Ipv6首先要做的就是将原来的SOCKADDR_IN等地址结构替换为SOCKADDR_STORAGE 该结构的定义如下: typ…
sockaddr结构体 struct  sockaddr{ sa_family_t  sa_family; //地址族,最常用的是"AF_INET"(IPV4)和"AF_INET6"(IPV6); char  sa_data[14]:     //包含套接字中的目标地址和端口信息; }: sockaddr的缺陷:sa_data把目标地址和端口信息混在一起了 sockaddr_in 结构体sockaddr_in结构体解决了sockaddr的缺陷,把port和addr…
linux的套接字部分比较容易混乱,在这里稍微总结一下. 地址转换函数在地址的文本表达式和它们存放在套接字地址结构中的二进制值进行转换. 地址转换函数有四个:其中inet_addr 和 inet_ntoa适用于IPv4,inet_pton 和 inet_ntop同时适于用IPv4和IPv6. 套接字地址结构分为IPv4套接字地址结构sockaddr_in和IPv6套接字地址结构sockaddr_in6.其中IPv4的套接字地址结构如下. IPv4套接字地址结构:(定义在<netinet/in.h…
摘录 python核心编程 使用socket()模块函数创建套接字——通信端点 >>> from socket import * >>> tcpSock = socket(AF_INET,SOCK_STREAM) >>> udpSock = socket(AF_INET,SOCK_DGRAM) 其中,AF_INET表示使用的是IPv4协议,SOCK_STREAM表示的面向连接的TCP协议,SOCK_DGRAM表示面向无连接的UDP协议. 在创建TCP和…
目录 一 前言 二 Talk is cheap, show me the code 三 效果演示 四 遇到的问题&解决 一 前言 文章不讲解理论知识哈,想学习理论知识的,认真听课…
socket 创建套接字文件: #include <sys/socket.h> // 成功返回非负套接字描述符,失败返回-1 int socket(int domain, int type, int protocol); domain值: domain 描述 AF_INET IPv4 Internet protocols AF_INET6 IPv6 Internet protocols type值: type 描述 SOCK_STREAM Provides sequenced, reliabl…
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服务.常用的函数为…
1.套接字结构 多数套接字函数都有套接字结构参数,每个协议族都定义了自己的套接字结构,以 sockaddr_ 开始,并对应协议族的唯一后缀. struct sockaddr_in { uint8_t sin_len; sa_family_t sin_family; in_port_t sin_port; struct in_addr sin_addr; char sin_zero[8]; } 对应用层编程而言,重要的只有:  sin_family, sin_addr, sin_port 2.字节…
原理 类unix系统中, 一切皆文件, 诸如磁盘文件, 显卡, 内核驱动, 网络协议栈等 socket就是linux中提供的用于网络通信的文件接口, 两台机器之间可以读写消息 在使用socket真正的通信之前, 需要先建立连接, 连接的建立根据协议的不同, 建立的过程也不一样, 目前支持tcp, udp 协议, 通过raw socket, 也可以直接访问网络层的数据包, 更多可参考 http://man7.org/linux/man-pages/man2/socket.2.html 基本使用 功…
Linux下地址转换函数 inet_pton ==> Ox inet_ntop ==> xxx.xxx.xxx #include <sys/types.h> #include <sys/socket.h> #include <arpa/inet.h> ]; //存放点分十进制IP地址 struct in_addr s; // IPv4地址结构体 printf("Please input IP address: "); scanf(&quo…
先上一张图 1.把ip地址转化为用于网络传输的二进制数值 int inet_aton(const char *cp, struct in_addr *inp); inet_aton() 转换网络主机地址ip(如192.168.1.10)为二进制数值,并存储在struct in_addr结构中,即第二个参数*inp,函数返回非0表示cp主机有地有效,返回0表示主机地址无效.(这个转换完后不能用于网络传输,还需要调用htons或htonl函数才能将主机字节顺序转化为网络字节顺序) in_addr_t…
http://blog.csdn.net/eagle51/article/details/53157643?utm_source=itdadao&utm_medium=referral 这两个函数是随IPv6出现的新函数,对于IPv4地址和IPv6地址都适用.函数名中的p和n非别代表表达(presentation)和数值(numeric).地址的表达格式通常是ASCII字符串,数值格式则是存放到套接字地址结构中的二进制值.函数如下: #include<arpa/inet.h> int …
获取主机信息 1.ip地址转换,主机字节序 <---> 网络字节序 #include <arpa/inet.h> int inet_pton(int af, const char* src, void* dst); const char* inet_ntop(int af, const void* src, char* dst, socklen_t cnt) inet_pton函数将用字符串表示的IP地址src(用淀粉十进制字符串表示的IPv4地址或用十六进制字符串表示的IPv6地…
- 头文件windows下:#include <WS2tcpip.h>linux下:#include <sys/socket.h>#include <netinet/in.h>#include<arpa/inet.h> - inet_pton函数将点分十进制串转换成网络字节序二进制值,此函数对IPv4地址和IPv6地址都能处理.第一个参数可以是AF_INET或AF_INET6:第二个参数是一个指向点分十进制串的指针:第三个参数是一个指向转换后的网络字节序的二…
1.头文件 1 #include <arpe/inet.h> 2.inet_pton 函数 A.原型 1 int inet_pton(int family, const char *strptr, void *addrptr); B.功能 : 将点分十进制的ip地址转化为用于网络传输的数值格式 C.返回值: 1).成功则为1, 2).输入不是有效的表达式则为0, 3).出错则为-1 3.inet_ntop函数 A.原型 1 const char * inet_ntop(int family,…