[Asembler/MASM] Pobieranie adresu IP
Dodane przez DavidF dnia 03/02/2012 00:58
Skorzystamy teraz z Windowsowej biblioteki do obsługi sieci o nazwie WinSock.

Kod programu jest bardzo prosty:

.386
.model flat, stdcall
option casemap:none

include windows.inc
include kernel32.inc
include user32.inc
include ws2_32.inc

includelib user32.lib
includelib kernel32.lib
includelib ws2_32.lib

.data
wsaData WSADATA <>;
P hostent <>;
HostName db 128 dup(0);
szCaption db "Twój adres IP",0

.data?

.code
start:
; Inicjacja Winsock
invoke WSAStartup, 0101h, addr wsaData
; Pobierz nazwę hosta
invoke gethostname, HostName, 128
; Pobierz strukturę hostent z nazwy hosta
invoke gethostbyname, addr HostName
mov ebx, eax
; EBX aktualnie wskazuje strukturę hostent
assume ebx: ptr hostent
mov eax, [ebx].h_list
assume ebx: nothing
; EBX aktualnie wskazuje na listę adresów IP
mov ebx, eax

mov eax, [ebx]
; Pobierz adres IP z wskaźnika na adres IP
mov eax, [eax]
; Zamień adres IP na tekst
invoke inet_ntoa, eax
invoke MessageBox, 0, eax, addr szCaption, 0
invoke ExitProcess,NULL
end start

To wszystko, dziękuję.
Autor: 0DFh