pobieranie lokalnego adresu IP (IPv4) maszyny / nazwa lokalnego hosta
char LocalHostName[20];
WSAData wsaData;
if (WSAStartup(MAKEWORD(2, 0), &wsaData) != 0)
{
// attempt to start up the WindowsSocketAPI failed ...
std::cout << "Error starting up the WSA
";
system("pause");
throw -1;
}
if (gethostname(LocalHostName, sizeof(LocalHostName)) == SOCKET_ERROR)
{
std::cout << "Error getting a local machine host name
";
system("pause");
throw -1;
}
LPHOSTENT hostEntry = gethostbyname(LocalHostName);
SOCKADDR_IN MyIPAddress;
MyIPAddress.sin_addr = *((LPIN_ADDR)*hostEntry->h_addr_list);
std::cout << static_cast<int>(MyIPAddress.sin_addr.S_un.S_un_b.s_b1) << "." << static_cast<int>(MyIPAddress.sin_addr.S_un.S_un_b.s_b2) << "." << static_cast<int>(MyIPAddress.sin_addr.S_un.S_un_b.s_b3) << "." << static_cast<int>(MyIPAddress.sin_addr.S_un.S_un_b.s_b4) << " on " << LocalHostName;
system("pause");
// close the WSA
WSACleanup();
WSAData wsaData;
if (WSAStartup(MAKEWORD(2, 0), &wsaData) != 0)
{
// attempt to start up the WindowsSocketAPI failed ...
std::cout << "Error starting up the WSA
";
system("pause");
throw -1;
}
if (gethostname(LocalHostName, sizeof(LocalHostName)) == SOCKET_ERROR)
{
std::cout << "Error getting a local machine host name
";
system("pause");
throw -1;
}
LPHOSTENT hostEntry = gethostbyname(LocalHostName);
SOCKADDR_IN MyIPAddress;
MyIPAddress.sin_addr = *((LPIN_ADDR)*hostEntry->h_addr_list);
std::cout << static_cast<int>(MyIPAddress.sin_addr.S_un.S_un_b.s_b1) << "." << static_cast<int>(MyIPAddress.sin_addr.S_un.S_un_b.s_b2) << "." << static_cast<int>(MyIPAddress.sin_addr.S_un.S_un_b.s_b3) << "." << static_cast<int>(MyIPAddress.sin_addr.S_un.S_un_b.s_b4) << " on " << LocalHostName;
system("pause");
// close the WSA
WSACleanup();
UWAGA: Koniecznie dolaczyc winsock2.h
Linki:
http://tangentsoft.net/wskfaq/examples/ipaddr.html
http://klepisko.eu.org/~bartek/bgnet/html/index.html
[URL]http://www.hal-pc.org/~johnnie2/winsock.html[/URL]
Autorem tekstu jest:
Marek Hajduczenia
Materiał dodany przez użytkownika: marek_haj
