
参考如下:
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地址等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)