Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2005.11.20;
Скачать: CL | DM;

Вниз

IP   Найти похожие ветки 

 
Yura32 ©   (2005-10-28 19:00) [0]

spomoshuyu kakoy komandi mojno uznat
IP komputera.
zarani spasibo


 
Leonid Troyanovsky ©   (2005-10-28 19:03) [1]


> Yura32 ©   (28.10.05 19:00)  

> IP komputera.


ipconfig

--
Regards, LVT.


 
Yura32 ©   (2005-10-28 19:19) [2]

ne gifa ne ponal . et kuda pisat?


 
Eraser ©   (2005-10-28 19:57) [3]

unit alxUSock;

interface

uses Windows, Winsock;

{

 Если Вы поместите строку результатов в wide TMEMO (в его свойство memo.lines.text)
 то никаких результатов не увидите.

 Тестировалось на Win98/ME/2K, 95 OSR 2 и NT service
 pack #3 , потому что используется WinSock 2 (WS2_32.DLL)

}
type sockaddr_gen = packed record
   AddressIn: sockaddr_in;
   filler: packed array[0..7] of char;
 end;

type INTERFACE_INFO = packed record
   iiFlags: u_long; // Флаги интерфейса
   iiAddress: sockaddr_gen; // Адрес интерфейса
   iiBroadcastAddress: sockaddr_gen; // Broadcast адрес
   iiNetmask: sockaddr_gen; // Маска подсети
 end;

type
 TInterfacesArray = array of INTERFACE_INFO;

function EnumInterfaces(var sInt: string;
 var InterfacesArray: TInterfacesArray): Boolean;

{ функция WSAIOCtl импортируется из Winsock 2.0 - Winsock 2 доступен }
{ только в Win98/ME/2K и 95 OSR2, NT srv pack #3 }

function WSAIoctl(s: TSocket; cmd: DWORD; lpInBuffer: PCHAR; dwInBufferLen:
 DWORD;
 lpOutBuffer: PCHAR; dwOutBufferLen: DWORD;
 lpdwOutBytesReturned: LPDWORD;
 lpOverLapped: POINTER;
 lpOverLappedRoutine: POINTER): Integer; stdcall; external "WS2_32.DLL";

{ Константы взятые из заголовка C файлов }

const SIO_GET_INTERFACE_LIST = $4004747F;
 IFF_UP = $00000001;
 IFF_BROADCAST = $00000002;
 IFF_LOOPBACK = $00000004;
 IFF_POINTTOPOINT = $00000008;
 IFF_MULTICAST = $00000010;

implementation

{-------------------------------------------------------------------

1. Открываем WINSOCK
2. Создаём сокет
3. Вызываем WSAIOCtl для доступа к сетевым интерфейсам
4. Для каждого интерфейса, получаем IP, MASK, BROADCAST, статус
5. Разделяем строку символом CRLF  
6. Конец :)

--------------------------------------------------------------------}

function EnumInterfaces(var sInt: string;
 var InterfacesArray: TInterfacesArray): Boolean;
var s: TSocket;
 wsaD: WSADATA;
 NumInterfaces: Integer;
 BytesReturned, SetFlags: u_long;
 pAddrInet: SOCKADDR_IN;
 pAddrString: PCHAR;
 PtrA: pointer;
 Buffer: array[0..20] of INTERFACE_INFO;
 i: Integer;
 //InterfacesArray: TInterfacesArray;
begin
 result := true;                                // Инициализируем переменную
 sInt := "";

 WSAStartup($0101, wsaD);                      // Запускаем WinSock
                                               // Здесь можно дабавить различные обработчики ошибки :)

 s := Socket(AF_INET, SOCK_STREAM, 0);          // Открываем сокет
 if (s = INVALID_SOCKET) then exit;

 try                                            // Вызываем WSAIoCtl
   PtrA := @bytesReturned;
   if (WSAIoCtl(s, SIO_GET_INTERFACE_LIST, nil, 0, @Buffer, 1024, PtrA, nil,
     nil)
     <> SOCKET_ERROR)
     then
   begin                                        // Если OK, то определяем количество существующих интерфейсов

     NumInterfaces := BytesReturned div SizeOf(INTERFACE_INFO);
     SetLength(InterfacesArray, NumInterfaces);

     for i := 0 to NumInterfaces - 1 do        // Для каждого интерфейса
     begin
       InterfacesArray[i] := Buffer[i];
       pAddrInet := Buffer[i].iiAddress.addressIn;            // IP адрес
       pAddrString := inet_ntoa(pAddrInet.sin_addr);
       sInt:=sInt+pAddrString;
       if i = NumInterfaces - 1 then
         sInt := sInt
       else
         sInt := sInt + #13#10;
       // CRLF между каждым интерфейсом
     end;
   end;
 except
 end;
//
// Закрываем сокеты
//
 CloseSocket(s);
 WSACleanUp;
 result := false;
end;

end.


 
wp2   (2005-10-28 20:17) [4]

М-да накодили тут.
А нельзя было просто сказать GetHostByName?


 
SergP ©   (2005-10-28 20:43) [5]


> Yura32 ©   (28.10.05 19:00)  
> spomoshuyu kakoy komandi mojno uznat
> IP komputera.
> zarani spasibo


А что подразумевается под "IP компьютера"?


 
Eraser ©   (2005-10-28 21:40) [6]


> wp2   (28.10.05 20:17) [4]

Я так понял нужно узнать свой IP, а их может быть много.
Если удалённого компа, то конечно GetHostByName.


 
wp2   (2005-10-28 23:30) [7]


> Я так понял нужно узнать свой IP, а их может быть много.
>
> Если удалённого компа, то конечно GetHostByName.

Можно и у своего компа узнать с помощью GetHostByName.
Только параметром этой функции должно быть имя компьютера.
Вообщим. В контекстом меню моего компьютера "Свойства" и вперёд.
Хотя есть интересная вещь: бывает, что компьютер имеет действительно разные IP-адреса! Но об этом попозже.

Можно также GetHostName


 
Eraser ©   (2005-10-28 23:43) [8]


> wp2   (28.10.05 23:30) [7]


> Хотя есть интересная вещь: бывает, что компьютер имеет действительно
> разные IP-адреса! Но об этом попозже.

Да ну!? ;-)


 
Defunct ©   (2005-10-29 01:02) [9]

SYSTEM\CurrentControlSet\Services\Tcpip\Parameters\Interfaces


 
wp2   (2005-10-29 16:30) [10]

Значит так: в Интернете есть специальные хакерские сайты - специально созданные для взломщиков. Назначение этих сайтов показать хакеру, что о нём можно узнать, после того как взломщик подконнектится. То есть насколько хакер себя обезопасил.
Так вот когда вы заходите на этот сайт вам показывают два (!) ваших IP-адреса, Версию вашей операционной системы, версию броузера, настройки монитора (разрешение, частота), какие программы установлены и т.д.
Говорят, что есть сайты, которые могут показать ваши географические координаты.

Подробнее можно прочитать на www.freeproxy.ru

Теперь насчёт этих двух IP-адресов.
Я дозваниваюсь с помощью программы VDialer, которая показывает мой IP-адрес во время моего соединения с Интернетом. Этот же адрес выдают функции GetHostByName и GetHostName.
Зачастую на тех х-сайтах этот адрес и не высвечивается, а высвечивается другой???
А навороченные сайты показывают оба адреса.
Честно говоря, я не насколько хорошо знают Интернет, чтобы мог сказать, что это за адреса. Может один адрес прокси-сервера провайдера, а другой мой - не знаю.
На сайтах пишется что-то вроде локального IP-адреса в подсети и реальный IP-адрес.


 
Yura32 ©   (2005-10-29 19:02) [11]

mne nada shtob v memo1.lines bil IP svoevo kompa.
mojete ne bolshoy primer napisat


 
wp2   (2005-10-29 21:03) [12]

uses WinSock;
var Buf: array [0..100] of Char;
   Info: TWSAData;
   P: PHostEnt;
begin
   WSAStartUp(2, Info);//Инициализируем бибилиотеку Winsock.dll (ws2_32.dll)
   GetHostName(Buf, SizeOf(Buf));//узнаем имя компьютера
   P := GetHostByName(Buf);//узнаем адрес по имени компьютера
   if P <> nil then Memo1.Lines.Add(inet_ntoa(PInAddr(P^.h_addr^)^));
   WSACleanUp//освобождаем память
end;


 
XCoder ©   (2005-11-04 15:02) [13]

У компьютера может быть только онин IP. "Первый" - это внутрисетевой, т.е. по которому к компу обращается сервер провайдера, но глобальной сети по нему к компу не подключишся. "Второй" как раз и есть глобальный IP.



Страницы: 1 вся ветка

Текущий архив: 2005.11.20;
Скачать: CL | DM;

Наверх




Память: 0.51 MB
Время: 0.027 c
2-1130502856
Oxid Burn
2005-10-28 16:34
2005.11.20
Timer


14-1130804324
Таблоид
2005-11-01 03:18
2005.11.20
Какие есть интересные англоязычные сайты по Delphi ?


6-1122277100
AbrosimovA
2005-07-25 11:38
2005.11.20
Закрыть открытый порт


1-1130409656
Дмитрий_05
2005-10-27 14:40
2005.11.20
Вытащить иконку из зашифрованного exe-файла?


5-1110306238
Monk
2005-03-08 21:23
2005.11.20
Классы дельфы