地址格式 inet_pton() int_ntop()
来源:互联网 发布:流星蝴蝶剑轻功 知乎 编辑:程序博客网 时间:2024/09/21 06:16
套接字通信域domain
AF_INET--------IPv4因特网域
AF_INET6--------IPv6因特网域
为了使不同格式地址能够传入套接字函数,地址被强制转换成通用的地址结构sockaddr表示。
因特网地址定义在<netinet/in.h>中。
在IPv4因特网域(AF_INET)中,地址用sockaddr_in表示。
struct in_addr {
in_addr_t s_addr;
};
In_addr_t为uint_32类型。
struct sockaddr_in{
sa_family_t sin_family;
in_port_t sin_port;
Struct in_addr sin_addr;
};
#include<arpa/inet.h>
const char *inet_ntop(int domain,const void *restrict addr,
char *restrict str,socklen_t size);
功能:将网络字节序的二进制地址转化为文本字符串格式
返回:成功,字符串指针;失败,NULL
int inet_pton(int domain,const char *restrict str,void *restrict addr);
将文本字符格式的地址转化为网络序的二进制地址
返回:成功,1;地址无效,0;失败,-1
domain:通信域,IPv4为AF_INET,IPv6为AF_INET6
addr:指示网络字节序的二进制地址存储空间指针,32位,struct in_addr结构
str:保存文本字符串区域指针
size:str字符串的空间大小,针对AF_INET,定义常量INET_ADDRSTRLEN为16,针对AF_INET6,定义常量INET6_ADDRSTRLEN为46。
程序实例:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <unistd.h>
#include <sys/socket.h>
#include <netinet/in.h>
int main (void)
{
printf("%d,%d\n",INET_ADDRSTRLEN,INET6_ADDRSTRLEN);
char IPdotdec[16]; //存放点分十进制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);
}
输出:
10.3.0.128
ox8000030a
参考:http://baike.baidu.com/link?url=vB1KtjVOSCCi7eMUBdmieJR_YYaVys9AkK0kt2EhbDLI5-qrtqYbmuIsx_iRKdze1AHi1tJR8dv-a04aD7cxLq
- 地址格式 inet_pton() int_ntop()
- inet_pton
- inet_pton
- 地址转换函数htonl和inet_pton
- 使用inet_pton函数判定ip地址合法性
- IP地址转换函数——inet_ntop(),inet_pton(),htonl(),ntohl()
- inet_pton()&inet_ntop(),Linux下的IP地址转换函数
- 地址转换函数inet_aton、 inet_ntoa、 inet_addr和inet_pton 、inet_ntop
- IP地址转换函数——inet_ntop(),inet_pton(),inet_addr(),inet_aton(),inet_ntoa()
- 使用inet_pton验证字符串是否是合法的ipv4或ipv6地址
- socket inet_pton
- socket inet_pton
- inet_pton函数
- inet_pton+inet_ntop
- inet_ntop, inet_pton
- inet_pton, inet_ntop
- inet_ntop(), inet_pton()
- inet_ntop, inet_pton
- MFC状态栏的编程--动态时间,进度栏和鼠标位置显示
- list.h链表练习
- 面试智力题 — 时针与分针夹角度数问题
- eclipse tomcat 直接启动
- sql 2008 远程过程调用失败 0x800706be
- 地址格式 inet_pton() int_ntop()
- Oracle中有效小数处理
- java连接MySql数据库
- 一个数的分解连续的自然数
- PHP优秀资源及博客收集平台
- VC++中CString类在不同环境中的区别
- SPI总线协议介绍
- java jni 调用cpp文件中的方法
- curl 命令使用