c语言编程 实现ip地址查找 方法用二进制trie

c语言编程 实现ip地址查找 方法用二进制trie,第1张

不知道您有没有学习过计算机网络。如果没有,下面简单介绍一下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很容易实现。

#include "stdioh"

#include "conioh"

main()

{

int i,j;

char ip[20];

char temp[100];

char ch='\0';

FILE fp;

system("ipconfig >d:\\myiptxt");

if ((fp=fopen("d:\\myiptxt","r"))==NULL)

{

printf("the file can not open:\nPress any key to exit:");

getch();

exit(1);

}

for (i=0;i<7;i++)

{fgets(temp,80,fp); /跳过一些行/

/printf("%s\n",temp); /}

fgets(temp,80,fp);

i=0;j=0;

while (temp[i++]!=':')

;

while (temp[i]!='\n')

ip[j++]=temp[i++];

ip[j]=0;

printf("IP=%s\n",ip);

fclose(fp);

system("del d:\\myiptxt");

getch();

}

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

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();

}

我临时写吧,没有调试,主要是这什么用啊,能用来换钱么

#inlcude<stdioh>

void main(void)

{

char a1,a2,a3,a4;

char m1,m2,m3,m4;

char r1,r2,r3,r4;

a1=127;a2=0;a3=0;a4=1; // your IP

m1=255;m2=255;m3=248;m4=0; // IP netmask

r1=a1&m1;r2=a2&m2;r3=a3&m3;r4=a4&m4; //your IP segment

m1=~m1;m2=~m2;m3=~m3;m4=~m4;

下面就是循环了循环的处理方法是如果m中为0,则循环0到255,不为0,则循环到大于这个m的时候,就终止所有循环,您自己动动脑筋,我点到这步比较好。

}

private static string getIPAddress ( )

{

SystemNetIPAddress addr;

// 获得本机局域网IP地址

addr = new SystemNetIPAddress ( DnsGetHostByName ( DnsGetHostName ( ) ) AddressList [0]Address ) ;

return addrToString ( ) ;

}

双击btn按钮,写上 thistxttext=getIPAddress();

以上就是关于c语言编程 实现ip地址查找 方法用二进制trie全部的内容,包括:c语言编程 实现ip地址查找 方法用二进制trie、C语言能获取当前IP吗、C语言IP地址查询系统如何实现等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

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

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

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

发表评论

登录后才能评论

评论列表(0条)

    保存