| Форум| Гостевая| Ссылки| Программы| Исходные тексты| Наши партнеры.|
   
| Главная| Рассылки| Услуги| Библиотека| Новости| Авторам| Программистам| Студентам|
delphi c++ assembler
 

Шаг 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
 

Rambler's Top100 Rambler's Top100

©  Adept Design Studio

Используются технологии uCoz