用C语言获取IP地址列表
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了用C语言获取IP地址列表相关的知识,希望对你有一定的参考价值。
最近给客户的SEP系统定义了一个简单的策略,策略是检测主机是否存在双网卡。SEP系统只能完成简单的运行可执行程序、检测文件是否存在、注册表是否存在等功能,因此需要写一个简单的判断双网卡的程序。因此写了一个简单的程序,代码如下:
#include <WinSock2.h> #include <windows.h> #include <stdio.h> #pragma comment (lib, "ws2_32") int _tmain(int argc, _TCHAR* argv[]) { WSADATA wsa = { 0 }; struct in_addr addr; int i = 0; char bHostName[MAXBYTE] = { 0 }; WSAStartup(MAKEWORD(2, 2), &wsa); gethostname(bHostName, MAXBYTE); hostent *ht = gethostbyname(bHostName); while ( ht->h_addr_list[i] != 0 ) { addr.s_addr = *(u_long *) ht->h_addr_list[i++]; // printf("IP Address #%d: %s\n", i, inet_ntoa(addr)); } if ( i > 1 ) { // printf("存在多个IP地址\r\n"); } else if ( i == 1 ) { char cIp[MAXBYTE] = { 0 }; strncpy_s(cIp, MAXBYTE, inet_ntoa(addr), strlen(inet_ntoa(addr))); if ( cIp[0] == ‘1‘ && cIp[1] == ‘0‘ && cIp[2] == ‘.‘ ) { // printf("一个IP地址,且IP地址为10.开头"); FILE *fp = NULL; fp = fopen("d:\\kernelsx86.dll", "w"); fclose(fp); } else { // printf("一个IP地址,但IP地址不为10.开头"); } } else { // printf("没有得到IP地址"); } WSACleanup(); return 0; }
代码写的不够好,不过反正不长。如果主机只有一个IP地址,且该IP地址是以10.开头的,那么在D盘下生成一个文件。
将该代码生成一个可执行文件,放到客户的Web服务器上,当安装在主机上的SEP客户端进行双网卡检测时,会从Web服务器上下载并运行该程序,该程序运行结束后,SEP客户端判断D盘下是否有生成的指定的文件,如果有该文件则SEP的检测双网卡的策略通过,否则不通过。
本文出自 “无觉的BLoG” 博客,请务必保留此出处http://wujue.blog.51cto.com/11999347/1856333
以上是关于用C语言获取IP地址列表的主要内容,如果未能解决你的问题,请参考以下文章