这几天一直在写利用URLDownloadToFile这个函数读取自己的外网IP,但使用时遇到一个这样的问题。第一次调用URLDownloadToFile这个函数时能正确读取到外网IP,但当使用VPN改变了自己的外网IP后,再调用URLDownloadToFile这个函数时,读取的结果仍然是改变前的IP,无法获取用vpn改变后的IP,请问哪位老大能指点一下是什么原因吗?附我的获取外网IP的函数如下:
void getcurrentip()
{
TCHAR buf[65535] = {0}; 
fstream fip;
int i=0,j=0,j1=0,s=1;
TCHAR ch;   URLDownloadToFile(0,"http://www.ip138.com/ip2city.asp","ip.txt",0,NULL);  for (i=0;i<16;i++)
chIP[i]=0;
i=0; fip.open("ip.txt",ios::in);
while (fip.get(ch))
{
buf[i]=ch;
i++;
}
fip.close();
DeleteFile("ip.txt");
while ((i>0)&&(s==1))
{
if (buf[j]=='[')
{
while (buf[j+j1+1]!=']')
{
chIP[j1]=buf[j+j1+1];
j1++;
}

s=0;
}
i--;
j++;
}
return;
}
其中chIP[i]是一个全局变量,用于存放读取的IP。我感觉这个函数应该没有问题,因为我单步运行这个函数,在使用VPN改变了自己的IP地址的情况下,单步运行到调用完URLDownloadToFile这个函数后,发现ip.txt这个文件中获取的IP仍然是使用VPN更改前的IP。应该是URLDownloadToFile这个函数使用方面存在问题。

解决方案 »

  1.   

    说明之后设置的VPN上的IP地址并没有在那个网页上显示,还是用的以前的那个IP....
    直接登陆http://www.ip138.com/ip2city.asp这个网页看看显示....
    看看使用VPN和不使用VPN有没有区别
      

  2.   

    直接登陆http://www.ip138.com/ip2city.asp这个后显示出使用VPN更改后的IP。但用URLDownloadToFile这个就是不行。
      

  3.   

    今天对这个函数的测试结果发现,变更IP后,我再用浏览器刷新访问http://www.ip138.com/ip2city.asp,然后URLDownloadToFile才能访问到更改后的IP,否则,只能访问更改前的IP,真是奇怪,不知道URLDownloadToFile这个函数的其中几个参数应该如何设定哦,总不能不间断地自己刷新浏览器吧,郁闷
      

  4.   

    经过几天的奋战,终于解决了这个问题。用这个函数前必须先用DeleteUrlCacheEntry这个函数清一下cookie。网络真是好东西啊,没能它,凭我这菜鸟水平一辈子也不可能解决这么一个看似简单的问题的。
    感谢朋友们的热心帮助