![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
IP [D7, WinXP]
Yura32 © (2005-10-28 19:00:00)spomoshuyu kakoy komandi mojno uznat
IP komputera.
zarani spasibo
XCoder (2005-11-04 15:02:00) [1]У компьютера может быть только онин IP. "Первый" - это внутрисетевой, т.е. по которому к компу обращается сервер провайдера, но глобальной сети по нему к компу не подключишся. "Второй" как раз и есть глобальный IP.
wp2 (2005-10-29 21:03:00) [2]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;
Yura32 (2005-10-29 19:02:00) [3]mne nada shtob v memo1.lines bil IP svoevo kompa.
mojete ne bolshoy primer napisat
wp2 (2005-10-29 16:30:00) [4]Значит так: в Интернете есть специальные хакерские сайты - специально созданные для взломщиков. Назначение этих сайтов показать хакеру, что о нём можно узнать, после того как взломщик подконнектится. То есть насколько хакер себя обезопасил.
Так вот когда вы заходите на этот сайт вам показывают два (!) ваших IP-адреса, Версию вашей операционной системы, версию броузера, настройки монитора (разрешение, частота), какие программы установлены и т.д.
Говорят, что есть сайты, которые могут показать ваши географические координаты.
Подробнее можно прочитать на www.freeproxy.ru
Теперь насчёт этих двух IP-адресов.
Я дозваниваюсь с помощью программы VDialer, которая показывает мой IP-адрес во время моего соединения с Интернетом. Этот же адрес выдают функции GetHostByName и GetHostName.
Зачастую на тех х-сайтах этот адрес и не высвечивается, а высвечивается другой???
А навороченные сайты показывают оба адреса.
Честно говоря, я не насколько хорошо знают Интернет, чтобы мог сказать, что это за адреса. Может один адрес прокси-сервера провайдера, а другой мой - не знаю.
На сайтах пишется что-то вроде локального IP-адреса в подсети и реальный IP-адрес.
Defunct (2005-10-29 01:02:00) [5]
SYSTEM\CurrentControlSet\Services\Tcpip\Parameters\Interfaces
Eraser (2005-10-28 23:43:00) [6]
> wp2 (28.10.05 23:30) [7]
> Хотя есть интересная вещь: бывает, что компьютер имеет действительно
> разные IP-адреса! Но об этом попозже.
Да ну!? ;-)
wp2 (2005-10-28 23:30:00) [7]
> Я так понял нужно узнать свой IP, а их может быть много.
>
> Если удалённого компа, то конечно GetHostByName.
Можно и у своего компа узнать с помощью GetHostByName.
Только параметром этой функции должно быть имя компьютера.
Вообщим. В контекстом меню моего компьютера "Свойства" и вперёд.
Хотя есть интересная вещь: бывает, что компьютер имеет действительно разные IP-адреса! Но об этом попозже.
Можно также GetHostName
Eraser (2005-10-28 21:40:00) [8]
> wp2 (28.10.05 20:17) [4]
Я так понял нужно узнать свой IP, а их может быть много.
Если удалённого компа, то конечно GetHostByName.
SergP (2005-10-28 20:43:00) [9]
> Yura32 © (28.10.05 19:00)
> spomoshuyu kakoy komandi mojno uznat
> IP komputera.
> zarani spasibo
А что подразумевается под "IP компьютера"?
wp2 (2005-10-28 20:17:00) [10]М-да накодили тут.
А нельзя было просто сказать GetHostByName?
Eraser (2005-10-28 19:57:00) [11]
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.
Yura32 (2005-10-28 19:19:00) [12]ne gifa ne ponal . et kuda pisat?
Leonid Troyanovsky (2005-10-28 19:03:00) [13]
> Yura32 © (28.10.05 19:00)
> IP komputera.
ipconfig
--
Regards, LVT.