C语言如何实现IP地址查询系统

C语言如何实现IP地址查询系统,第1张

C语言如何实现IP地址查询系统

参考如下:

void GetNameAndIp()

{

struct hostent host;

struct in_addr ptr;

DWORD dwScope = RESOURCE_CONTEXT;

NETRESOURCE NetResource = NULL;

HANDLE hEnum;

WNetOpenEnum(dwScope, NULL, NULL, NULL, &hEnum);

WSADATA wsaData;

WSAStartup(MAKEWORD(1, 1), &wsaData);

if (hEnum)

{

DWORD Count = 0xFFFFFFFF;

DWORD BufferSize = 10240;

LPVOID Buffer = new char[10240];

WNetEnumResource(hEnum, &Count, Buffer, &BufferSize);

NetResource = (NETRESOURCE)Buffer;

char szHostName[200];

for (unsigned int i = 0; i < BufferSize / sizeof(NETRESOURCE); i++, NetResource++)

{

if (NetResource->dwUsage == RESOURCEUSAGE_CONTAINER && NetResource->dwType == RESOURCETYPE_ANY)

{

if (NetResource->lpRemoteName)

{

CString strFullName = NetResource->lpRemoteName;

if (0 == strFullNameLeft(2)Compare(_T("\\\\")))

strFullName = strFullNameRight(strFullNameGetLength() - 2);

gethostname(szHostName, strlen(szHostName));

USES_CONVERSION;

char pchar = T2A(strFullName);

host = gethostbyname(pchar);

if (host == NULL) continue;

ptr = (struct in_addr ) host->h_addr_list[0];

string str = "";

for (int n = 0; n<4; n++)

{

CString addr;

if (n > 0)

{

str += "";

}

int value = (unsigned int)((unsigned char)host->h_addr_list[0])[n];

char p[20];

sprintf(p, "%d", value);

strappend(p);

}

std::cout <<"IP:"<< str <<" Name:"<<host->h_name<< std::endl;

}

}

}

delete Buffer;

WNetCloseEnum(hEnum);

}

WSACleanup();

}

我觉得你这个需求,倒不一定非得用c语言来实现。你这个其实可以调用百度的插件,因为你在百度上输入这个IP地址的话,然后他就能查出来这个IP所在的位置,你可以用JAVA,然后调用百度的一些插件就能实现这个功能。

internet。c语言中internet一个禁止获取ip地址,因为功能设置低。C语言是一门面向过程的、抽象化的通用程序设计语言,广泛应用于底层开发。C语言能以简易的方式编译、处理低级存储器。

(1)本地连接被人为的修改过IP了。

(2)把上网的网线接在路由器wan口。

(3)有些特殊情况,极少数的,是由于浏览器的兼容问题,建议使用IE浏览器等。

1、查看

打开“计算机”

——“打开控制面板

”——打开“网络和共享中心

”——打开“更改适配器设置

”——右击“本地连接”——“状态”——“详细信息”——查看“IPv4地址”是不是1921680X,如图:

2、分析

(a)如果依然是169,那么就手动配置IP,打开“计算机”——“打开控制面板”——打开“网络和共享中心”——打开“更改适配器设置”——右击“本地连接”——“属性”——双击“Internet 协议版本4(TCP/IP4)”,如图:

(b)如果你获取到的IP地址不是169而是其他的IP地址,例如101010X:说明你的路由器连接在了路由器数字口,获取到的是上一级路由器分配的IP地址,请重新连接线路,将上网的网线连接到路由器wan口。

(c)你查看的地址是其他IP地址,而且没有差错线,那么你的IP地址是被人人为修改过了,如图:

不知道您有没有学习过计算机网络。如果没有,下面简单介绍一下IP地址和掩码。

IP地址是32位的,也就是4字节。取值可以任意。

掩码也是32位的,一般建议前面的位都为1,后面的位都为0。所以本题:

(1)只要是32位的都是有效的。

(2)判断是否全1后面接全0

(3)如果掩码的前n位为1,那么此IP所在网络全部有效IP地址是此IP地址的前n位不变,后面的位从全0到全1,比如IP地址为1111掩码为FFFF0000,那么此IP地址所在网络的全部有效IP地址是从1100到11255255。

(4)两个IP地址都与掩码进行二进制与,看得到的结果是否相同,如果相同则在同一子网中,否则不在同一子网中。这个用c很容易实现。

这是私有地址(Private address)属于非注册地址,专门为组织机构内部使用。

以下表列出留用的内部寻址地址

A类 10000 --10255255255

B类 1721600--17231255255

C类 19216800--192168255255

1 A类地址

⑴ A类地址第1字节为网络地址,其它3个字节为主机地址。另外第1个字节的最高位固定为0。

⑵ A类地址范围:1001到126255255254。

⑶ A类地址中的私有地址和保留地址:

①10000到10255255255是私有地址(所谓的私有地址就是在互联网上不使用,而被用在局域网络中的地址)。

② 127000到127255255255是保留地址,用做循环测试用的。

2 B类地址

⑴ B类地址第1字节和第2字节为网络地址,其它2个字节为主机地址。另外第1个字节的前两位固定为10。

⑵ B类地址范围:128001到191255255254。

⑶ B类地址的私有地址和保留地址

① 1721600到17231255255是私有地址

②16925400到169254255255是保留地址。如果你的IP地址是自动获取IP地址,而你在网络上又没有找到可用的DHCP服务器,这时你将会从16925400到169254255255中临得获得一个IP地址。

3 C类地址

⑴C类地址第1字节、第2字节和第3个字节为网络地址,第4个个字节为主机地址。另外第1个字节的前三位固定为110。

⑵ C类地址范围:192001到223255255254。

⑶ C类地址中的私有地址:19216800到192168255255是私有地址。

以上就是关于C语言如何实现IP地址查询系统全部的内容,包括:C语言如何实现IP地址查询系统、C语言IP地址查询系统如何实现、c语言中哪一个禁止获取ip地址等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/web/9426366.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-04-28
下一篇2023-04-28

发表评论

登录后才能评论

评论列表(0条)

    保存