對於我正在做的事情,我想獲得運行程序的PC的外部IP地址(用C語言編寫)。到目前爲止,我發現最好的方法是連接到一個只顯示訪問者IP的站點,然後解析IP的網頁。第一部分很簡單,但是當我顯示緩衝區時,我閱讀了頁面(它只能看到我的IP),在IP之後我會得到一些隨機的額外符號/字符。下面是我使用ATM代碼(簡化,以排除其他的東西):解析這個IP是正確的長度?
HINTERNET OpenInternet = NULL;
HINTERNET GetIP = NULL;
DWORD BytesRead = 0;
char IPGrabbed[30];
OpenInternet = InternetOpen("Microsoft Internet Explorer", INTERNET_OPEN_TYPE_DIRECT, NULL, NULL, 0);
if (OpenInternet == NULL) {
return 1;
}
GetIP = InternetOpenUrl(OpenInternet, "http://api.externalip.net/ip/", NULL, 0, INTERNET_FLAG_RELOAD, 0);
if (GetIP == NULL)
return 1;
if (!InternetReadFile(GetIP, &IPGrabbed, sizeof(IPGrabbed), &BytesRead))
return 1;
printf("IP: %s", IPGrabbed);
getchar();
我也試圖通過IPGrabbed解析停止在任何「\ n」或「\ r」(因爲它顯示了怪異的人物當我printf()它下面的線IP),然後複製一切,直到有另一個字符數組,但得到了相同的結果。任何人都可以幫我弄清楚這裏發生了什麼?謝謝。
請輸入和輸出樣本。 –