22 个解决方案
#1
在线等
#2
这个是查询的问题。。。你能拿到数据吗?
#3
google 下 wry.dll。虽然叫dll,但实际不是dll。
#4
你可以去下载IP纯真数据库,然后根据所在IP段,来大概的判断,貌似gh0st就是这样做的
#5
学习呀~~
#6
这个问题说白了就是个查询问题,能拿到IP数据库就有办法。腾讯貌似有。
#7
http://www.crsky.com/soft/767.html 这里能下到
用excel可以打开。
可以自己写代码解析,或者导进数据库里
用excel可以打开。
可以自己写代码解析,或者导进数据库里
#8
然后通过IP去那表格里查出信息
#10
楼主这个问题,QQ面过我...
#11
通过实现跟www.ip138.com的交互,然后获取提交查询后的网页源文件内容,然后在源文件中查找 本站主数据这个字符串,后面的就是你想要的。至于说怎么实现跟网站的交互,可以用libcurl库,或者用WinInet库来做,个人推荐用libcurl库来做
#12
是查询真实数据库的问题,就是不知道c++怎么查,或者说时c吧,因为我是在linux下的客户端.
#13
谢了,wry.dll貌似linux用不了吧-.-
#14
这也是个好办法阿,不过下下来后,以后有更新又要下了.目前我们服务端就是这个机制,不过想在客户端处理,最好能有直接从网上的真实数据库里读取数据出来.
#15
腾讯的很蛋疼,我的ip在qq上显示的都跑德国IP去。
#16
IP地址和地名对应的数据库一般来说是放在服务器上,否则有两个小的问题:
1. 每个客户端上都要装有同样的数据库
2. 数据记录更新时,所有的客户端都要更新,如果在服务器上只需更新一次。
这是自己维护数据库的情况。
如果不想自己维护ip地址数据库,11楼的办法应该可以。
#17
如果有的服务端有1w客户连接,你也这么做,算了,还是用本地的吧,这样的话,估计带宽不够吧,君不见灰鸽子的那个就用本地的
#18
#include <cstdio>
#include <curl.h>
#include <cstring>
#include <cstdlib>
#include <types.h>
#include <easy.h>
#pragma comment(lib,"libcurl_imp.lib")
struct BufferStruct
{
char *buffer;
size_t size;
};
static size_t WritememoryCallback(void *ptr,size_t size,size_t nmemb,void *data)
{
size_t realsize=size*nmemb;
BufferStruct *mem=(BufferStruct *)data;
mem->buffer=(char*)realloc((void*)(mem->buffer),mem->size+realsize+1);
if(mem->buffer)
{
memcpy(&(mem->buffer[mem->size]),ptr,realsize);
mem->size+=realsize;
mem->buffer[mem->size]=0;
}
return realsize;
}
int main()
{
curl_global_init(CURL_GLOBAL_ALL);
CURL *myHandle;
CURLcode result;
BufferStruct output;
output.buffer=NULL;
output.size=0;
myHandle=curl_easy_init();
curl_easy_setopt(myHandle,CURLOPT_WRITEFUNCTION,WritememoryCallback);
curl_easy_setopt(myHandle,CURLOPT_WRITEDATA,(void*)&output);
curl_easy_setopt(myHandle,CURLOPT_URL,"http://www.ip138.com/ips.asp?ip=220.165.13.221&action=2");
result=curl_easy_perform(myHandle);
curl_easy_cleanup(myHandle);
FILE *fp;
fp=fopen("maoxin.txt","w");
if(!fp)
return 1;
fprintf(fp,output.buffer);
fclose(fp);
if(output.buffer)
{
free(output.buffer);
output.buffer=0;
output.size=0;
}
return 0;
}
这个代码实现了把提交后的网页下载到本地,你可以去网上下个libcurl库来编译,由于时间有限,我就不写怎么解析出地址的代码了
#19
你先用抓包工具抓包就可以看到很多了,
http://www.ip138.com/ips.asp?ip=220.165.13.221&action=2
你将ip=后的ip换成你要查的ip就可以了
http://www.ip138.com/ips.asp?ip=220.165.13.221&action=2
你将ip=后的ip换成你要查的ip就可以了
#20
想想还是放在本地好,再综合16楼的想法,放在服务端还是比较妥当的.这块已经用java实现过了.谢谢各位了.尤其是17楼哈,连实现代码都有了, 搞ui搞太多,底层库都不熟练-.-
#21
mark
#22
回复于:2011-06-08 18:02:32
#1
在线等
#2
这个是查询的问题。。。你能拿到数据吗?
#3
google 下 wry.dll。虽然叫dll,但实际不是dll。
#4
你可以去下载IP纯真数据库,然后根据所在IP段,来大概的判断,貌似gh0st就是这样做的
#5
学习呀~~
#6
这个问题说白了就是个查询问题,能拿到IP数据库就有办法。腾讯貌似有。
#7
http://www.crsky.com/soft/767.html 这里能下到
用excel可以打开。
可以自己写代码解析,或者导进数据库里
用excel可以打开。
可以自己写代码解析,或者导进数据库里
#8
然后通过IP去那表格里查出信息
#9
#10
楼主这个问题,QQ面过我...
#11
通过实现跟www.ip138.com的交互,然后获取提交查询后的网页源文件内容,然后在源文件中查找 本站主数据这个字符串,后面的就是你想要的。至于说怎么实现跟网站的交互,可以用libcurl库,或者用WinInet库来做,个人推荐用libcurl库来做
#12
是查询真实数据库的问题,就是不知道c++怎么查,或者说时c吧,因为我是在linux下的客户端.
#13
谢了,wry.dll貌似linux用不了吧-.-
#14
这也是个好办法阿,不过下下来后,以后有更新又要下了.目前我们服务端就是这个机制,不过想在客户端处理,最好能有直接从网上的真实数据库里读取数据出来.
#15
腾讯的很蛋疼,我的ip在qq上显示的都跑德国IP去。
#16
IP地址和地名对应的数据库一般来说是放在服务器上,否则有两个小的问题:
1. 每个客户端上都要装有同样的数据库
2. 数据记录更新时,所有的客户端都要更新,如果在服务器上只需更新一次。
这是自己维护数据库的情况。
如果不想自己维护ip地址数据库,11楼的办法应该可以。
#17
如果有的服务端有1w客户连接,你也这么做,算了,还是用本地的吧,这样的话,估计带宽不够吧,君不见灰鸽子的那个就用本地的
#18
#include <cstdio>
#include <curl.h>
#include <cstring>
#include <cstdlib>
#include <types.h>
#include <easy.h>
#pragma comment(lib,"libcurl_imp.lib")
struct BufferStruct
{
char *buffer;
size_t size;
};
static size_t WritememoryCallback(void *ptr,size_t size,size_t nmemb,void *data)
{
size_t realsize=size*nmemb;
BufferStruct *mem=(BufferStruct *)data;
mem->buffer=(char*)realloc((void*)(mem->buffer),mem->size+realsize+1);
if(mem->buffer)
{
memcpy(&(mem->buffer[mem->size]),ptr,realsize);
mem->size+=realsize;
mem->buffer[mem->size]=0;
}
return realsize;
}
int main()
{
curl_global_init(CURL_GLOBAL_ALL);
CURL *myHandle;
CURLcode result;
BufferStruct output;
output.buffer=NULL;
output.size=0;
myHandle=curl_easy_init();
curl_easy_setopt(myHandle,CURLOPT_WRITEFUNCTION,WritememoryCallback);
curl_easy_setopt(myHandle,CURLOPT_WRITEDATA,(void*)&output);
curl_easy_setopt(myHandle,CURLOPT_URL,"http://www.ip138.com/ips.asp?ip=220.165.13.221&action=2");
result=curl_easy_perform(myHandle);
curl_easy_cleanup(myHandle);
FILE *fp;
fp=fopen("maoxin.txt","w");
if(!fp)
return 1;
fprintf(fp,output.buffer);
fclose(fp);
if(output.buffer)
{
free(output.buffer);
output.buffer=0;
output.size=0;
}
return 0;
}
这个代码实现了把提交后的网页下载到本地,你可以去网上下个libcurl库来编译,由于时间有限,我就不写怎么解析出地址的代码了
#19
你先用抓包工具抓包就可以看到很多了,
http://www.ip138.com/ips.asp?ip=220.165.13.221&action=2
你将ip=后的ip换成你要查的ip就可以了
http://www.ip138.com/ips.asp?ip=220.165.13.221&action=2
你将ip=后的ip换成你要查的ip就可以了
#20
想想还是放在本地好,再综合16楼的想法,放在服务端还是比较妥当的.这块已经用java实现过了.谢谢各位了.尤其是17楼哈,连实现代码都有了, 搞ui搞太多,底层库都不熟练-.-
#21
mark
#22
回复于:2011-06-08 18:02:32