linux获取局域网、公网IP地址以及主机名
来源:互联网 发布:为什么淘宝网购失效 编辑:程序博客网 时间:2024/05/09 15:26
int IsLANIP(unsigned int nIP){ // filter LAN IP's // ------------------------------------------- // 0.* // 10.0.0.0 - 10.255.255.255 class A // 172.16.0.0 - 172.31.255.255 class B // 192.168.0.0 - 192.168.255.255 class C unsigned char nFirst = (unsigned char)nIP; unsigned char nSecond = (unsigned char)(nIP >> 8); /* check this 1st, because those LANs IPs are mostly spreaded */ if (nFirst==192 && nSecond==168) return 1; if (nFirst==172 && nSecond>=16 && nSecond<=31) return 1; if (nFirst==0 || nFirst==10) return 1; if(nFirst==127) return 1; if(nFirst==169 && nSecond==254) return 1; return 0; }void get_server_info(char* public_ip,char* local_ip,char* hostname,size_t hostname_size){ struct sockaddr_in *sin = NULL; struct ifaddrs *ifa = NULL, *ifList; *public_ip = 0; *local_ip = 0; *hostname=0; gethostname(hostname,hostname_size); if (getifaddrs(&ifList) < 0) return; for (ifa = ifList; ifa != NULL; ifa = ifa->ifa_next) { if(ifa->ifa_addr->sa_family == AF_INET) { if(strcmp(ifa->ifa_name,"lo")==0){ continue; } sin = (struct sockaddr_in *)ifa->ifa_addr; if(!IsLANIP(sin->sin_addr.s_addr)){ strcpy(public_ip,inet_ntoa(sin->sin_addr)); } else strcpy(local_ip,inet_ntoa(sin->sin_addr)); } } freeifaddrs(ifList);}
0 0
- linux获取局域网、公网IP地址以及主机名
- Android获取公网IP以及局域网IP
- iOS开发 获取公网IP和局域网IP地址
- 知道局域网ip地址,获取该ip的主机名
- 实用Linux下获取公网IP地址
- Linux中根据主机名获取其在局域网中的IP地址
- 获取公网ip地址
- 获取公网IP地址
- 获取公网IP地址
- java 获取局域网中的所有主机名和IP地址
- 获取局域网内在线主机名及IP地址源码
- “VC在局域网中通过http协议获取公网IP地址”以及“多个服务器节点的测速代码”
- C# 获取公网IP和局域网IP
- JSP获取公网IP和局域网IP
- 从局域网获取公网IP的实现
- 通过IP地址查看局域网内主机名
- 获得局域网内IP地址和主机名
- VC在局域网中通过http协议获取公网IP地址
- 理解Linux文件系统之inode
- E-R图关系模式的转换
- Java网络爬虫讲解
- tomcat绑定域名
- 【基础练习】【Floyd+枚举】codevs1167 树网的核题解
- linux获取局域网、公网IP地址以及主机名
- tomcat绑定域名
- C++并查集
- tomcat绑定域名
- 牛客网 | 二叉树的深度
- C++ 队列
- leetcode Subsets II
- 状态压缩DP-HDU-1074-Doing Homework
- Unity3D的一个坑