我的网络编程学习之路——地址转换函数
来源:互联网 发布:越南网络歌 编辑:程序博客网 时间:2024/05/16 08:46
inet_pton 和 inet_ntop 这两个函数是随IPv6出现的新函数,对于IPv4地址和IPv6地址都适用。当然还有inet_aton、inet_addr和inet_ntoa在点分十进制与它长度为32位的网络字节序二进制值间转换IPv4地址。这里我们一般使用前两个函数。
在这两个函数中,函数名中p和n分别代表表达式和数值。地址的表达式格式通常是ASCII字符串,数值格式则是存放到套接字地址结构中的二进制。
#include <arpa/inet.h>int inet_pton(int family, const char *strptr, void *addrptr);返回:若成功则为1,若输入不是有效的表达格式则为0,若出错则为-1const char *inet_ntop(int family, const void *addrptr, char *strptr, size_t len);返回:若成功则为指向结果的指针,若出错则为NULL这两个函数的family参数既可以是AF_INET也可以是AF_INET6.如果以不被支持的地址族作为family参数,这两个函数就都返回 一个错误,并将erron置为EAFNOSUPPORT。
第一个函数尝试转换由strptr指针所指的字符串,并通过addrptr指针存放二进制结果。若成功则返回值为1,否则如果对所指定的family而言输入的字符串不是有效的表达格式,那么返回0.
inet_ntop进行相反的转换,从数值格式(addrptr)转换到表达格式(strptr)。len参数是目标存储单元的大小,以免该函数溢出其调用者的缓冲区。为有助于指定这个大小,在<netinet/in.h>头文件中有如下定义:
#define INET_ADDRSTRLEN16/* for IPv4 dotted-decimal */#define INET6_ADDRSTRLEN46/* for IPv4 hex string */如果len太小,不足以容纳表达格式结果(包括结尾的空字符),那么返回一个空指针,并置errno为ENOSPC。
inet_ntop函数的strptr参数不可以是一个空指针。调用者必须为目标存储单元分配内存并指定其大小。调用成功时,这个指针就是该函数的返回值。
下面总结下这5个地址转换函数(其中3个只是提到)。
阅读全文
0 0
- 我的网络编程学习之路——地址转换函数
- 我的网络编程学习之路——套接字地址结构
- 我的网络编程学习之路——getsockname 和 getpeername 函数
- 我的网络编程学习之路——poll函数
- 我的网络编程学习之路——epoll函数
- UNIX网络编程——地址转换函数
- 网络编程函数——字节序转换函数和地址转换函数
- 我的网络编程学习之路——主机字节序和网络字节序
- 我的网络编程学习之路——基本的TCP套接字API
- 我的网络编程学习之路——套接字选项
- 我的网络编程学习之路——TCP和UDP
- Linux 网络编程——网络字节序、地址转换
- Linux 网络编程——网络字节序、地址转换
- Linux 网络编程——网络字节序、地址转换
- UNIX网络编程——socket概述和字节序、地址转换函数
- UNIX网络编程——socket概述和字节序、地址转换函数
- (四十八)socket编程——引入、网络字节序、IP地址转换函数、sockaddr数据结构
- 我的网络编程学习之路——TCP(流)套接字的读和写
- codeforces 780B
- 关于Django中view对数据库的调用
- iOS7时代我们用什么来追踪和识别用户?
- CodeForces
- request和response的区别
- 我的网络编程学习之路——地址转换函数
- C++编程连接string字符串和int数字的好方法
- windows下easyBCD引导安装ubutu14.04双系统
- 艾灸是不是真那么神奇?
- CodeForces
- tensorflow构建神经网络回归分析可视化
- 在shell中创建文件的三种姿势-echo-cat-vi
- CodeForces
- 【算法题】黑化的牛牛