Как узнать локальный IP-адрес компьютера
Очередной небольшой сниппет, который может пригодиться в работе. Получение IP-адреса компьютера, на котором запущено приложение. Обратите внимание, что это будет локальный адрес, например, который прописан на роутере.Для удобства дальнейшей работы надо определить структуру, в которой содержится информация о хосте. Остальное вроде бы все штатное.
Code (Assembler) : Убрать нумерацию
- ; Маска для IP
- mask db '%u.%u.%u.%u',0
- struct HOSTENT
- h_name dd ?
- h_aliases dd ?
- h_addrtype dw ?
- h_length dw ?
- h_addr_list dd ?
- ends
Code (Assembler) : Убрать нумерацию
- invoke WSAStartup,0101h,wsadata
- or eax,eax
- jnz loc_ret
- ; Получить имя хоста
- invoke gethostname,szHostName,MAX_PATH
- or eax,eax
- jnz loc_clean
- ; Получить адрес хоста по имени
- invoke gethostbyname,szHostName
- or eax,eax
- jz loc_clean
- ; Указатель на массив указателей на IP
- mov eax,[eax+HOSTENT.h_addr_list]
- or eax,eax
- jz loc_clean
- ; Первый указатель
- mov eax,[eax]
- or eax,eax
- jz loc_clean
- ; Преобразовать IP из формата TCP/IP в обычный
- invoke ntohl,[eax]
- ; Преобразовать байты в символы
- mov ecx,4
- loc_loop:
- movzx ebx,al
- push ebx
- shr eax,8
- loop loc_loop
- invoke wsprintf,szIP,mask
- add esp,24
- ; szIP -> строка с IP хоста
- loc_clean:
- ; Прибраться за собой
- invoke WSACleanup
В приложении пример программы с исходным текстом, которая получает и выводит на экран локальный IP-адрес компьютера.
Просмотров: 382 | Комментариев: 0
Комментарии
Отзывы посетителей сайта о статье
Комментариeв нет
Добавить комментарий
Заполните форму для добавления комментария