на C: static char IP[16]; struct sockaddr_in *sa; int sas = sizeof(sa); memset(&sa, 0, sizeof(sa)); getsockname(sock, &sa, &sas); sprintf(IP,"%d.%d.%d.%d",(BYTE)sa.sa_data[2], (BYTE)sa.sa_data[3], (BYTE)sa.sa_data[4], (BYTE)sa.sa_data[5]); кормить сокеты
CchkConect proc uses edi esi ebx pOutIPaddr:dword LOCAL sin : sockaddr_in LOCAL binz : sockaddr_in LOCAL sizbin : dword LOCAL hSocket : dword LOCAL pDats[200]:byte jmp @F dddd db 'www.microsoft.com',0 @@: mov ebx, -1 invoke socket, AF_INET, SOCK_STREAM, 0 .if eax != -1 mov hSocket, eax mov sin.sin_family, AF_INET invoke htons, 80 mov sin.sin_port,ax invoke gethostbyname, addr dddd .if eax != 0 mov eax, [eax+0Ch] mov eax, [eax] mov eax, [eax] mov sin.sin_addr, eax invoke connect, hSocket, addr sin, sizeof sin .if eax == 0 mov sizbin, sizeof binz invoke getsockname, hSocket, addr binz, addr sizbin mov eax, binz.sin_addr invoke inet_ntoa, eax invoke lstrcpy, pOutIPaddr, eax mov ebx, 1 .endif .endif invoke closesocket, hSocket .endif mov eax, ebx ret CchkConect endp
Хелп, чото всеравно не выходит, вот подключился к инету сейчас и все равно выводит IP: 255.255.255.255 Код (Text): .data ... SOCKADDR STRUCT sa_family dw 0 sa_data db 14 dup (0) SOCKADDR ENDS sa SOCKADDR <> wsaData WSADATA <> szsa dw sizeof sa sock dd 0 ;сакет ... .code ... invoke WSAStartup,202h,addr wsaData invoke socket,AF_INET,SOCK_STREAM,0 mov sock,eax invoke getsockname,s,addr sa,szsa invoke inet_ntoa,eax invoke lstrcat,addr mIP,eax invoke MessageBox,0,addr mIP,addr mIP,MB_OK invoke WSACleanup ... В чем моя ошипка? И почему непоказует правильный IP адресс моего компа в сети???
А если я буду в локальной сети то эта функция прокатит? Или есть что-нибудь еще? (localhost вроде все время указывает)на 127.0.0.1)