C/C++ 获取自身IP与域名片段的示例代码
判断大端序小端序:
通常情况下,数值在内存中存储的方式有两种,一种是大尾字节序,另一种是小尾,比如0x01020304这样一个数值,如果用大尾方式存储,其存储方式为01020304而用小尾方式存储则是04030201,一般Windows操作系统兼容的CPU为小尾方式,而UNIX操作系统所兼容的CPU多为大尾方式,通过使用两种方法即可判断大小纬。
#include#include #include #pragmacomment(lib,"ws2_32.lib") //变量法判断 voidGetA() { DWORDdwSmallNum=0x01020304; if(*(BYTE*)&dwSmallNum==0x04) printf("小端字节序\n"); else printf("大端字节序\n"); } //直接转换法判断 voidGetB() { DWORDdwSmallNum=0x01020304; if(dwSmallNum==htonl(dwSmallNum)) printf("大端字节序\n"); else printf("小端字节序\n"); } intmain(intargc,char*argv[]) { GetA(); GetB(); system("pause"); return0; }
利用域名获取IP:
通过使用winsocket库中的gethostbyname()可以将一个域名所对应的别名,地址类型等信息提取出来。
#include#include #include #pragmacomment(lib,"ws2_32.lib") BOOLGetHostByName(char*HostName) { WSADATAwsaData; if(WSAStartup(MAKEWORD(2,2),&wsaData)!=0) returnFALSE; structhostent*ptr=gethostbyname(HostName); if(!ptr){returnFALSE;} printf("地址类型:%s\n",(ptr->h_addrtype==AF_INET)?"IPV4":"IPV6"); for(inti=0;ptr->h_aliases[i];i++){ printf("别名[%d]:%s\n",i+1,ptr->h_aliases[i]); } for(inti=0;ptr->h_addr_list[i];i++){ printf("IP地址[%d]:%s\n",i+1,inet_ntoa(*(structin_addr*)ptr->h_addr_list[i])); } WSACleanup(); returnTRUE; } intmain(intargc,char*argv[]) { GetHostByName("www.baidu.com"); system("pause"); return0; }
取自身主机名IP地址:
有时候我们需要得到自身IP地址,这里我封装了两种获取IP地址的方法。
#include#include #include #pragmacomment(lib,"ws2_32.lib") char*GetLocalHostName() { WSADATAwsaData; HOSTENT*pHost; charszHostName[256]; if(WSAStartup(MAKEWORD(2,2),&wsaData)!=0) exit(0); if(gethostname(szHostName,256)==0) { char*Host; Host=(char*)malloc(1024); pHost=gethostbyname(szHostName); strcpy(Host,pHost->h_name); returnHost; } return""; } char*GetLocalHostAddr(intCount) { WSADATAwsaData; HOSTENT*pHost; charszHostName[256]; if(WSAStartup(MAKEWORD(2,2),&wsaData)!=0) exit(0); if(gethostname(szHostName,256)==0) { chartmp[15]; char*Addr; pHost=gethostbyname(szHostName); intindex=0; for(;index<10;index++) { if(pHost->h_addr_list[index]==NULL) break; } sprintf(tmp,"%d.%d.%d.%d", pHost->h_addr_list[0][0]&0xff, pHost->h_addr_list[0][1]&0xff, pHost->h_addr_list[0][2]&0xff, pHost->h_addr_list[0][3]&0xff); Addr=(char*)malloc(15); strcpy(Addr,tmp); returnAddr; } return""; } intmain(intargc,char*argv[]) { char*hostname=GetLocalHostName(); printf("本机名字:%s\n",hostname); char*hostaddr=GetLocalHostAddr(0); printf("本机IP:%s\n",hostaddr); system("pause"); return0; }
以上就是C/C++获取自身IP与域名片段的示例代码的详细内容,更多关于C/C++获取自身IP与域名片段的资料请关注毛票票其它相关文章!
声明:本文内容来源于网络,版权归原作者所有,内容由互联网用户自发贡献自行上传,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任。如果您发现有涉嫌版权的内容,欢迎发送邮件至:czq8825#qq.com(发邮件时,请将#更换为@)进行举报,并提供相关证据,一经查实,本站将立刻删除涉嫌侵权内容。