外部IP地址

时间:2011-02-18 03:15:58

标签: c++ windows ip-address external

  

可能重复:
  Stable way of retrieving the external IP for a host behind a NAT

嗯,再次问好。我想知道如何获得计算机的外部IP地址(外部因为有些人有路由器)?

2 个答案:

答案 0 :(得分:3)

编写程序并使用HTTP协议连接到某些外部网站,例如: http://www.whatismyip.com/

然后编写解析器来解析: 您的IP地址是:xxx.xxx.xxx.xxx

瞧。

答案 1 :(得分:1)

这是使用用户建议的一种方式...当然这只适用于您自己的IP,您也可以通过打开命令提示符并运行ipconfig /all来确定

#include <windows.h>
#include <wininet.h>
#include <iostream>

#pragma comment(lib, "wininet")

int main(int argc, char* argv[])
{
    HINTERNET hInternet, hFile;
    DWORD rSize;
    char buffer[32];

    hInternet = InternetOpen(NULL, INTERNET_OPEN_TYPE_PRECONFIG, NULL, NULL, 0);
    hFile = InternetOpenUrl(hInternet, "http://automation.whatismyip.com/n09230945.asp", NULL, 0, INTERNET_FLAG_RELOAD, 0);
    InternetReadFile(hFile, &buffer, sizeof(buffer), &rSize);
    buffer[rSize] = '\0';

    InternetCloseHandle(hFile);
    InternetCloseHandle(hInternet);

    std::cout << "Your IP Address: " << buffer << "\n";
    system("pause");
    return 0;
}   

仅供参考:http://www.whatismyip.com/的所有者请求您每隔5分钟才会点击此自动化页面 ,因此我不得不提出一个警告,不要经常运行此代码,而不是好吧:P

注意:http://automation.whatismyip.com/n09230945.asp是自动化文件的最新地址。 5分/ 300秒规则仍然存在。