1. 程式人生 > >vs2015獲取本地IP地址

vs2015獲取本地IP地址

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;
}


已測試