#include "stdafx.h"#include#include #pragma comment(lib, "ws2_32.lib")#pragma comment(lib, "urlmon.lib") #define MAX_SIZE 1024 int GetLocalIP();int GetInternetIP(); int main(int argc, char* argv[]){ GetLocalIP(); GetInternetIP(); return 0;} int GetLocalIP(){ WSADATA wsaData; int err = WSAStartup(MAKEWORD(2, 0), &wsaData); if (err != 0) { return err; } char szHostName[MAX_PATH] = {0}; int nRetCode; nRetCode = gethostname(szHostName, sizeof(szHostName)); char* lpLocalIP; PHOSTENT hostinfo; if (nRetCode != 0) { return WSAGetLastError(); } hostinfo = gethostbyname(szHostName); lpLocalIP = inet_ntoa(*(struct in_addr*)*hostinfo->h_addr_list); if (szHostName != NULL) { printf("主机名: %s\n", szHostName); printf("本地IP: %s\n", lpLocalIP); } WSACleanup(); return 0;} int GetInternetIP(){ char buf[MAX_PATH] = {0}; //把网页中读出的数据放在此处 char chTempIp[128] = {0}; char chIP[64] = {0}; //最终存放IP在此 //将网页数据写入c:\i.ini文件中 URLDownloadToFile(0, "http://iframe.ip138.com/ic.asp", "c:\\i.ini", 0, NULL); FILE *fp = fopen("c:\\i.ini", "r"); if (fp != NULL) { // fseek(fp, 0, SEEK_SET); fread(buf, 1, MAX_PATH, fp); fclose(fp); //在buf中查找 [ 的位置, iIndex是buf中从[开始剩下的字符串,包括[这个字符串 char* iIndex = strstr(buf, "["); if (iIndex) { sprintf(chTempIp, "%s", iIndex); int nBuflen = strlen(chTempIp); for (int i = 0; i < nBuflen; i++) { chIP[i] = chTempIp[i+1]; //如果发现有 ] 则截断 if (chTempIp[i] == ']') { chIP[i-1] = '\0'; //printf("外网IP: %s\n", chIP); } } } } printf("外网IP: %s\n", chIP); remove("c:\\i.ini"); return 0; }