是否有內置的可以獲取主機名和IP地址的Windows C++函數調用?謝謝。獲取本地主機名和IP地址的C++ Windows函數調用
9
A
回答
12
爲了讓你可以使用主機名:gethostname或異步方法WSAAsyncGetHostByName
要獲得地址信息,您可以使用:getaddrinfo或Unicode版本GetAddrInfoW
您可以獲取有關計算機的更多信息名稱就像使用Win32 API的域名:。
4
這是一個多平臺解決方案... Windows,Linux和MacOSX。 您可以獲取ip地址,端口,sockaddr_in,端口。
BOOL GetMyHostName(LPSTR pszBuffer, UINT nLen)
{
BOOL ret;
ret = FALSE;
if (pszBuffer && nLen)
{
if (gethostname(pszBuffer, nLen) == 0)
ret = TRUE;
else
*pszBuffer = '\0';
}
return ret;
}
ULONG GetPeerName(SOCKET _clientSock, LPSTR _pIPStr, UINT _IPMaxLen, int *_pport)
{
struct sockaddr_in sin;
unsigned long ipaddr;
ipaddr = INADDR_NONE;
if (_pIPStr && _IPMaxLen)
*_pIPStr = '\0';
if (_clientSock!=INVALID_SOCKET)
{
#if defined(_WIN32)
int locallen;
#else
UINT locallen;
#endif
locallen = sizeof(struct sockaddr_in);
memset(&sin, '\0', locallen);
if (getpeername(_clientSock, (struct sockaddr *) &sin, &locallen) == 0)
{
ipaddr = GetSinIP(&sin, _pIPStr, _IPMaxLen);
if (_pport)
*_pport = GetSinPort(&sin);
}
}
return ipaddr;
}
ULONG GetSinIP(struct sockaddr_in *_psin, LPSTR pIPStr, UINT IPMaxLen)
{
unsigned long ipaddr;
ipaddr = INADDR_NONE;
if (pIPStr && IPMaxLen)
*pIPStr = '\0';
if (_psin)
{
#if defined(_WIN32)
ipaddr = _psin->sin_addr.S_un.S_addr;
#else
ipaddr = _psin->sin_addr.s_addr;
#endif
if (pIPStr && IPMaxLen)
{
char *pIP;
struct in_addr in;
#if defined(_WIN32)
in.S_un.S_addr = ipaddr;
#else
in.s_addr = ipaddr;
#endif
pIP = inet_ntoa(in);
if (pIP)
adjust_str(pIP, pIPStr, IPMaxLen);
}
}
return ipaddr;
}
int GetSinPort(struct sockaddr_in *_psin)
{
int port;
port = 0;
if (_psin)
port = _Xntohs(_psin->sin_port);
return port;
}
相關問題
- 1. 獲取主機的MAC地址和IP地址 - C++
- 2. Qt - 從IP地址獲取主機名和MAC地址
- 3. PHP(Windows和Linux) - 獲取基於IP地址的主機名稱
- 4. 從IP地址獲取主機名
- 5. 從IP地址獲取主機名
- 6. 獲取本地IP地址的主機名(java)
- 7. 本地主機和IP地址問題
- 8. 使用getaddrinfo()C函數獲取本地IP地址?
- 9. 獲取本地IP地址
- 10. 獲取SFML中的主機IP地址
- 11. 顯示主機名和IP地址
- 12. 獲取遠程主機IP地址QTcpServer
- 13. 通過IP地址獲取本地主機網頁
- 14. 如何在Docker容器中獲取本地主機IP地址?
- 15. 無法從getsockname獲取本地主機IP地址?
- 16. 本地主機vs真實IP地址
- 17. 在Powershell中使用nslookup獲取IP地址的主機名
- 18. 使用網絡上的主機名獲取IP地址asp.net
- 19. 在Powershell中使用nslookup獲取主機名的IP地址
- 20. 獲取Ruby on Rails中的主機名或IP地址
- 21. 獲取IP地址的所有主機名的網絡
- 22. 獲取本地主機名
- 23. 爲IP地址分配URL(IP地址映射到主機名)
- 24. MySQL錯誤:無法從您的IP地址獲取主機名
- 25. Python的 - 獲取本地主機IP
- 26. libmysql mysql_real_connect失敗本地主機,但與本地IP地址
- 27. 如何使用主機名獲取IP地址?
- 28. 無法從您的IP地址獲取主機名
- 29. 獲取和檢查本地計算機的IP地址
gethostname(),getaddrinfo() – WhirlWind 2010-05-29 04:23:01