首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 数据库 > 其他数据库 >

童真ip数据库(QQWry.Dat)查询源代码C语言版

2012-12-26 
纯真ip数据库(QQWry.Dat)查询源代码C语言版????????????fseek(ipFile, tmp+4, SEEK_SET)????????} else{?

纯真ip数据库(QQWry.Dat)查询源代码C语言版
????????????fseek(ipFile, tmp+4, SEEK_SET);????????} else{????????????fseek(ipFile, -1, SEEK_CUR);????????????readStringCur(string);????????????string = strcat(string, " ");?????????}?????} elseif(NO_AREA == flag){????????fread(countryOffset, 1, 3, ipFile);????????readString(string, countryOffset[0]);????????string = strcat(string, " ");????????fseek(ipFile, offset+8, SEEK_SET);????} else{????????readString(string, offset+4);????????string = strcat(string, " ");????}????readArea(string);}?/**?* 读取地区字符串到string后面,具体是加在国家字符串后面?* @param char *string?* @return void?*/voidreadArea(char*string){?????unsigned longoffset[1] = {0L};????chararea[255] = "";????int? flag = fgetc(ipFile);????if(AREA_FOLLOWED == flag || NO_AREA == flag) {????????fread(offset, 1, 3, ipFile);????????readString(area, offset[0]);????????string = strcat(string, area);????} else{????????fseek(ipFile, -1, SEEK_CUR);????????readStringCur(area);????????string = strcat(string, area);????}}?/**?* 检查命令行输入参数?*/voidcheckCmdLine(intargc, char**argv){????if(argc == 1) {????????//数据库信息????????unsigned longll = seekIpBinarySearch("255.255.255.0");????????charstring[255]="";????????seekCountryArea(string,ll);????????printf("%s %lu条\n", string, ipSum);?????????//输出你的ip地址????????localIp(string);????????printf("\n你的IP:%s\n",string);????????ll = seekIpBinarySearch(string);????????seekCountryArea(string,ll);????????printf("IP地址:%s\n",string);?????????//帮助????????puts("----------------------------------------");????????puts("查询ip地址");????????printf("\n用法:\%s ip地址\n例如:%s 127.0.0.1\n", argv[0], argv[0]);?????????puts("\n解压数据库");????????printf("\n用法:\%s -o 文件名\n例如:%s -o qqwry.txt\n", argv[0], argv[0]);?????????puts("\n搜索字符串");????????printf("\n用法:\%s -s 字符串\n例如:%s -s 浏阳\n", argv[0], argv[0]);????????puts("----------------------------------------");????????exit(1);????//搜索ip记录????}elseif(argc==2){????????puts(argv[1]);????????charstring[255]="";????????unsigned longll = seekIpBinarySearch(argv[1]);//二分法搜索ip记录位置????????seekCountryArea(string, ll);//从ll位置读取ip记录信息????????puts(string);????}elseif(argc == 3 ){????????//导出记录????????if(strcmp(argv[1],"-o")==0){????????????puts("准备导出");????????????//文件已经存在(,还需要判断是否可写,不然崩溃)????????????if(access(argv[2],F_OK) == 0){???????????????printf("是否覆盖%s(Y/N)",argv[2]);???????????????charch = 0;???????????????while( (ch = tolower(getchar())) != 'y'&& ch !='n') {???????????????????printf("是否覆盖%s(Y/N)",argv[2]);???????????????}???????????????if(ch =='n')???????????????????exit(1);????????????}????????????exportData(argv[2]);????????}elseif(strcmp(argv[1],"-s")==0){????????????searchIpByName(argv[2]);????????}else{????????????puts("有任何问题请联系:hehuiahui@163.com");????????}????//其他????}else{????????puts("有任何问题请联系:hehuiahui@163.com");????}}?/**?* 从当前位置读取4个字节转换为ip字符串?* @param char *string 保存ip字符串?*/voidreadIpString(char*string){// if(sizeof(string) < 16)//???? realloc(string, 16);sprintf(string, "%d.%d.%d.%d", fgetc(ipFile), fgetc(ipFile), fgetc(ipFile), fgetc(ipFile));//? free(string);}?/**?* 导出记录?* @param char *filename 文件名?*?*/voidexportData(char*fileName){????FILE*fp = fopen(fileName, "wb");????unsigned longi=0;????unsigned longdata[1]={0};????charstring[255]="";????unsigned longdi = (ipSum/100);????intj=0;????while(!feof(ipFile) && i != ipSum){????????//起始ip????????fseek(ipFile, ipBegin + RECORD_LENGTH * i, SEEK_SET);????????readIpString(string);????????fprintf(fp, "%-16s", string);????????//结束ip????????fread(data, 1, 3, ipFile);????????fseek(ipFile, data[0], SEEK_SET);????????readIpString(string);????????fprintf(fp, "%-16s", string);????????//国家地区????????seekCountryArea(string, data[0]);????????fputs(string, fp);????????fputs("\r\n",fp); // \r\n for windows????????//导出进度????????if(i%di==0){????????????if(j>9)????????????????putchar('\b');????????????putchar('\b');????????????putchar('\b');????????????if(j%2==0)????????????????putchar('#');????????????printf("%d%%",j++);????????}????????++i;????}????puts("\n导出完毕");}?/**?* 搜索国家地区中包含某字符串的ip段?* @param char *name 要搜索的字符串?*/voidsearchIpByName(char*name){????unsigned longi=0;????unsigned longdata[1]={0};????charstring[255]="";????unsigned longj=0;????intk=0;????while(!feof(ipFile) && i != ipSum){?????????fseek(ipFile, ipBegin + RECORD_LENGTH * i +4, SEEK_SET);????????fread(data, 1, 3, ipFile);????????seekCountryArea(string, data[0]);????????if(strstr(string, name) != NULL) {????????????while(k>0){????????????????putchar('\b');????????????????--k;????????????}????????????charipStr[16]="";????????????fseek(ipFile, ipBegin + RECORD_LENGTH * i, SEEK_SET);????????????readIpString(ipStr);????????????printf("%-16s", ipStr);?????????????fread(data, 1, 3, ipFile);????????????fseek(ipFile, data[0], SEEK_SET);????????????readIpString(ipStr);????????????printf("%-16s", ipStr);?????????????puts(string);????????????++j;????????}else{????????????//等待?????????????if(i%(ipSum/50)==0){?????????????????putchar('>');?????????????????++k;?????????????}????????}????????++i;????}?????while(k>0){????????putchar('\b');????????--k;????}????printf("总共搜索到 %lu 条记录。????????????????????????????? ",j);}

localIp.h

12345#ifndef LOCAL_IP_H#define LOCAL_IP_H?intlocalIp(char*ip);#endif

localIp.c

01020304050607080910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273/**?* 获取本机ip地址?*?* 需要指定wsock32.lib?* gcc需要指定libwsock32.a?* @author http://www.heui.org?* @version 0.1?*/?#include <winsock2.h>#include <wsipx.h>//#include "wsnwlink.h"#include <stdio.h>?#include "localIp.h"?intlocalIp(char*ip){????////////////////????// Initialize windows sockets API. Ask for version 1.1????//????WORDwVersionRequested = MAKEWORD(1, 1);????WSADATA wsaData;????if(WSAStartup(wVersionRequested, &wsaData)) {????????printf("WSAStartup failed %s\n", WSAGetLastError());????????return-1;????}?????//////////////////????// Get host name.????//????charhostname[256];????intres = gethostname(hostname, sizeof(hostname));????if(res != 0) {????????printf("Error: %u\n", WSAGetLastError());????????return-1;????}?????////////////////????// Get host info for hostname.????//????structhostent* pHostent = gethostbyname(hostname);????if(pHostent==NULL) {????????printf("Error: %u\n", WSAGetLastError());????????return-1;????}?????structsockaddr_in sa;????intnAdapter;????char*addr;????for(nAdapter=0; pHostent->h_addr_list[nAdapter]; nAdapter++) {????????memcpy( &sa.sin_addr.s_addr, pHostent->h_addr_list[nAdapter],pHostent->h_length);?????????addr =inet_ntoa(sa.sin_addr);?????????// Output the machines IP Address.??????//? printf("Address: %s\n", addr =inet_ntoa(sa.sin_addr)); // display as string????}????memcpy(ip,addr,16);????//////////////////????// Terminate windows sockets API????//????WSACleanup();????return0;}/*int main(){?????char ip[16];????localIp(ip);????printf("%s",ip);????return 0;}*/

resource.rc

1A ICON "my_icon.ico"

代码打包下载:纯真ip数据库(QQWry.Dat)查询源代码C语言版 qqwry0.82

转载自:纯真ip数据库(QQWry.Dat)查询源代码C语言版

热点排行