博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
域名解析
阅读量:5086 次
发布时间:2019-06-13

本文共 2499 字,大约阅读时间需要 8 分钟。

#include
struct in_addr { in_addr_t s_addr; //32-bit IPv4 address,BE};struct sockaddr_in { uint8_t sin_len; //该结构长度 16-bit sa_family_t sin_family; //AF_INET in_port_t sin_port; //端口号 struct in_addr sin_addr; //32-bit IP地址 char sin_zero[8];  //保留};

  

 

通过域名获取IP地址,IP地址两个表达方式的转换(点分十进制,数值格式,eg:255.255.0.0---0x0000FFFF(网络字节序)),字节序的转换

 

socket编程接口

#include
#include
//通过域名获取IP地址struct hostent *gethostbyname(const char *name);/* name:域名,eg:"www.baidu.com"*///通过二进制的IP地址找到对应的域名struct hostent *gethostbyaddr(const void *addr, socklen_t len, int type);/* addr:二进制ip len:ip长度,对于IPv4是4 type:AF_INET*/struct hostent { char *h_name; /* official name of host */ char **h_aliases; /* alias list */ int h_addrtype; /* host address type */ int h_length; /* length of address */ char **h_addr_list; /* list of addresses */}/* char* 字符串都是以 '\0' 结束的 char** 字符串指针都是以 NULL 结束的*///ip地址格式转换#include
//点分十进制转换为数值形式int inet_pton(int af, const char *src, void *dst);/* af: AF_INET/AF_INET6,对应IPv4/IPv6 src: 点分十进制字符串,eg: "255.255.0.0" dst: 存放转换结果的,对应解析为 0x0000FFFF,大端 返回:成功,1;src无效,0;出错,-1;*///数值形式转换为点分十进制形式const char *inet_ntop(int af, const void *src, char *dst, socklen_t size);/* src:网络字节序,二进制形式,eg: 0x0000ffff dst:存放转换结果,点分十进制字符串 size:指定字符串长度 返回:成功,dst;出错,NULL*///主机字节序和网络字节序转换#include
uint32_t htonl(uint32_t hostlong);uint16_t htons(uint16_t hostshort);uint32_t ntohl(uint32_t netlong);uint16_t ntohs(uint16_t netshort);

  

使用例子

#include
#include
#include
#include
void printHostent(struct hostent *p){ printf("%s\n",p->h_name); char **q=p->h_aliases; while(*q!=NULL){ printf("%s\n",*q); ++q; } printf("%d %d\n",p->h_addrtype,p->h_length); q=p->h_addr_list; char str[16]; while(*q!=NULL){ printf("%s\n",inet_ntop(AF_INET,*q,str,16)); //printf("%s\n",str); ++q; } }int main(){ printf("struct hostent of www.baidu.com:\n"); char *host="www.baidu.com"; struct hostent *p=gethostbyname(host); if(p==NULL) printf("gethostbyname failed\n"); else printHostent(p); printf("\npresentation ip---numeric ip\n"); unsigned int a; inet_pton(AF_INET,"255.255.0.0",&a); printf("numeric ip network byte order: %x\n",a); printf("host byte order: %x\n",ntohl(a)); char str[16]; inet_ntop(AF_INET,&a,str,16); printf("presentation ip: %s\n",str);}

  

转载于:https://www.cnblogs.com/jokoz/p/4723647.html

你可能感兴趣的文章
15 FFT及其框图实现
查看>>
Linux基本操作
查看>>
osg ifc ifccolumn
查看>>
C++ STL partial_sort
查看>>
3.0.35 platform 设备资源和数据
查看>>
centos redis 安装过程,解决办法
查看>>
IOS小技巧整理
查看>>
WebDriverExtensionsByC#
查看>>
我眼中的技术地图
查看>>
lc 145. Binary Tree Postorder Traversal
查看>>
sublime 配置java运行环境
查看>>
在centos上开关tomcat
查看>>
重启rabbitmq服务
查看>>
正则表达式(进阶篇)
查看>>
无人值守安装linux系统
查看>>
【传道】中国首部淘宝卖家演讲公开课:农业本该如此
查看>>
jQuery应用 代码片段
查看>>
MVC+Servlet+mysql+jsp读取数据库信息
查看>>
黑马程序员——2 注释
查看>>
用OGRE1.74搭建游戏框架(三)--加入人物控制和场景
查看>>