vs2015獲取本地IP地址
阿新 • • 發佈:2019-02-12
VS2015下除錯獲取本地IP,出現錯誤warning C4996: 'gethostbyname': Use getaddrinfo() or GetAddrInfoW() instead or define _WINSOCK_DEPRECATED_NO_WARNINGS to disable deprecated API
百度解決問題:需要在專案屬性裡設定,告訴編譯器,我就用老函式,讓她不要報錯了。
//Project properties -> Configuration Properties -> C/C++ -> General -> SDL checks -> No
原文地址:http://jingyan.baidu.com/article/1709ad8097e5904634c4f03e.html
獲取本地IP程式碼實現:
#include <winsock2.h> //套接字程式設計需要的標頭檔案 #pragma comment(lib,"ws2_32.lib") //套接字程式設計需要的庫檔案 //Project properties -> Configuration Properties -> C/C++ -> General -> SDL checks -> No CString CboardtestDlg::GetLocalIp(void) { struct hostent* phost; char ip[20]; char hostname[100]; WSADATA wsadata; if (0 != WSAStartup(MAKEWORD(2, 2), &wsadata)) //初始化 { AfxMessageBox("初始化網路環境失敗!"); return NULL; } gethostname(hostname, 100); phost = gethostbyname(hostname); char *pIP = inet_ntoa(*(in_addr *)phost->h_addr_list[0]);//將32位IP轉化為字串IP WSACleanup(); //釋放Winsock API CString LocalIp = pIP; return LocalIp; }
已測試