Шаг 19 - Получение своего IP адреса.
Итак, задача получить свой IP адрес. Для начала надо получить имя локального хоста. Мы это делали. "Шаг 3 - Получение имени хоста" имея имя хоста можно получить IP адрес, воспользовавшись функцией gethostbyname(). Давайте посмотрим:
// TestB.cpp : Defines the entry point for the console application.
//
#include "stdafx.h"
#include "winsock2.h"
#include "iostream.h"
#pragma comment(lib,"wsock32.lib")
void main()
{
WSADATA wsaData;
if (!WSAStartup(WINSOCK_VERSION, &wsaData))
{
char chInfo[64];
if (!gethostname(chInfo,sizeof(chInfo)))
{
cout << chInfo << endl;
hostent *sh;
sh=gethostbyname((char*)&chInfo);
if (sh!=NULL)
{
cout << sh->h_name << endl;
int nAdapter = 0;
while ( sh->h_addr_list[nAdapter] )
{
struct sockaddr_in adr;
memcpy(&adr.sin_addr,sh->h_addr_list[nAdapter],sh->h_length);
cout << inet_ntoa(adr.sin_addr) << endl;
nAdapter++;
}
}
}
else cout << "Error local host " << endl;
}
else cout << "Winsock initial Bad !!!!" << endl;
WSACleanup();
}
Ничего особенного кроме того, что h_addr_list - это указатель на массив указателей адресов и адрес нужно преобразовать в привычный вид через inet_ntoa().
Предыдущий шаг | Следующий Шаг | Оглавление By Artem.
Используются технологии uCoz
|