Оригинальный DVD-ROM: eXeL@B DVD !
eXeL@B ВИДЕОКУРС !

ВИДЕОКУРС ВЗЛОМ
выпущен 2 августа!


УЗНАТЬ БОЛЬШЕ >>
Домой | Статьи | RAR-cтатьи | FAQ | Форум | Скачать | Видеокурс
Новичку | Ссылки | Программирование | Интервью | Архив | Связь

ПРОГРАММИРОВАНИЕ НА C и С++



Возможности языков семейства Си по истине безграничны, однако, в этой свободе кроются и недостатки: всегда нужно программисту держать ухо востро и контроллировать "переполнение буфера", чтобы потом программа не вылетала в "синий экран" на массе разнообразных версий Windows и железа у пользователей. Те же крэкеры и реверсеры специально ищут в коде программ на Си уязвимости, куда можно подсадить любой вирусный код, об этом более подробно автор рассказывал в своём видеокурсе здесь. Я там многое узнал и теперь мой код стал значительно более безопасный.
 
 WSADATA wsaData;
 
 WSAStartup(MAKEWORD (1,1),&wsaData);
 
 
 
 char HostName[1024];
 
 DWORD m_HostIP = 0;
 
 if(!gethostname(HostName, 1024))
 
 {
 
 if(LPHOSTENT lphost = gethostbyname(HostName))
 
 m_HostIP = ((LPIN_ADDR)lphost->h_addr)->s_addr;
 
 }
 
 
Развивая ответ Олега, если тебе нужно строковое представление IP адреса например "195.124.13.1" то используй тот же код +
 
 szIPAddr=char[17];
 
 strcpy(szIPAddr,inet_ntoa(*((in_addr*)lpHostEnt->h_addr_list[0])));
 
 
Это работает наверняка. Или
 
 strcpy(szIPAddr,inet_ntoa(*((in_addr*)lphost->h_addr_list)));
 
 
Если нужны числа, в смысле по байтам: a1=195,a2=124,a3=13,a4=1 то в последнюю строку, предложенную Олегом поменяй на
 
 a1=((LPIN_ADDR)lphost->h_addr)->s_b1
 
 a2=((LPIN_ADDR)lphost->h_addr)->s_b2
 
 a3=((LPIN_ADDR)lphost->h_addr)->s_b3
 
 a4=((LPIN_ADDR)lphost->h_addr)->s_b4
 
 
или
 
 a1=lphost->h_addr_list[0]
 
 a2=lphost->h_addr_list[1]
 
 a3=lphost->h_addr_list[2]
 
 a4=lphost->h_addr_list[3]
 
 


<< ВЕРНУТЬСЯ В ПОДРАЗДЕЛ

<< ВЕРНУТЬСЯ В ОГЛАВЛЕНИЕ




Материалы находятся на сайте https://exelab.ru/pro/



Оригинальный DVD-ROM: eXeL@B DVD !


Вы находитесь на EXELAB.rU
Проект ReactOS