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

Вниз

Как узнать внешний ip адрес?   Найти похожие ветки 

 
RoLeX   (2006-10-24 16:43) [0]

Мой комп находится в локальной сети и подключен к интернету. Т.е. он имеет 2 ip адреса: 1 в локалке другой - инетовский (внешний). Как определить внешний ip адрес?

Этот код выводит в Memo1 оба ip адреса, как узнать какой из них внешний:

procedure TForm1.Button1Click(Sender: TObject);
var
 WSAData: TWSAData;
 P: PHostEnt;
 Name: array [0..$FF] of Char;
begin
 WSAStartup($0101, WSAData);
 try
   GetHostName(name, $FF);
   P := GetHostByName(Name);
   while Assigned(P.h_addr_list^) do
   begin
     Memo1.Lines.Add(inet_ntoa(PInAddr(P.h_addr_list^)^));
     Inc(P.h_addr_list);
   end;
 finally
   WSACleanup;
 end;
end;


 
DVM ©   (2006-10-24 16:55) [1]


> Этот код выводит в Memo1 оба ip адреса, как узнать какой
> из них внешний:

Никак в общем случае. Потому как локалку можно построить и на реальных внешних IP адресах.

Ну а в частности, можно проверить не входит ли IP в один из диапазонов адресов, предназначенных для использования в локальных сетях.
Вот и все. Диапазоны известны.


 
Anatoly Podgoretsky ©   (2006-10-24 17:03) [2]

А если оба входят, а это нормальная ситуация, как и обратная, тогда что?


 
RoLeX   (2006-10-24 17:22) [3]


>  Диапазоны известны.

Кроме 192.168,0,1-255 больше ничего не знаю. А какие ещё есть?


 
Mike Kouzmine ©   (2006-10-24 17:28) [4]

RoLeX   (24.10.06 17:22) [3] А что мешает назначить другие адреса? Страшный бармалей?


 
RoLeX   (2006-10-24 17:34) [5]


> Mike Kouzmine ©   (24.10.06 17:28) [4]
> RoLeX   (24.10.06 17:22) [3] А что мешает назначить другие
> адреса? Страшный бармалей?

Ну ладно если я себе назначу адрес из этого диапазона. А как я буду у других на компе назначать?


 
Mike Kouzmine ©   (2006-10-24 17:50) [6]

RoLeX   (24.10.06 17:34) [5]

> Mike Kouzmine ©   (24.10.06 17:28) [4]
> RoLeX   (24.10.06 17:22) [3] А что мешает назначить другие
> адреса? Страшный бармалей?

Ну ладно если я себе назначу адрес из этого диапазона. А как я буду у других на компе назначать?

Не понял.


 
guav ©   (2006-10-24 17:55) [7]

Забиндить сокет на адрес и пойти этим сокетом в инет, если получилось, значит адрес инетовский ?


 
RoLeX   (2006-10-24 18:12) [8]

А примером можно? плиз...


 
StriderMan ©   (2006-10-24 18:14) [9]


>  Как узнать внешний ip адрес?

http://whatismyip.com/


 
Dmitrij_K   (2006-10-24 19:16) [10]

yoip.ru


 
RoLeX   (2006-10-24 20:31) [11]

Во, получилось!

function GetIP: string;
var
  hSession: HINTERNET;
  hService: HINTERNET;
  lpBuffer: array[0..1024 + 1] of Char;
  dwBytesRead: DWORD;
  tlist:TStrings;
  i,j:integer;
begin
tlist:=TStringList.Create; tlist.Clear;
 hSession := InternetOpen("MyApp", INTERNET_OPEN_TYPE_PRECONFIG, nil, nil, 0);
  try
    if Assigned(hSession) then
    begin
      hService := InternetOpenUrl(hSession, PChar("http://checkip.dyndns.org"), nil, 0, INTERNET_FLAG_RELOAD, 0);
      if Assigned(hService) then
        try
          while True do
          begin
            dwBytesRead := 1024;
            InternetReadFile(hService, @lpBuffer, 1024, dwBytesRead);
            if dwBytesRead = 0 then break;
            lpBuffer[dwBytesRead] := #0;
            tlist.Add(lpBuffer);
          end;
        finally
          InternetCloseHandle(hService);
        end;
    end;
  finally
    InternetCloseHandle(hSession);
  end;
for i:=1 to length(tlist[0]) do if copy(tlist[0],i,20)="Current IP Address: " then
 for j:=i+20 to length(tlist[0]) do if tlist[0][j]<>"<" then result:=result+tlist[0][j] else break;
end;



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

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

Наверх




Память: 0.49 MB
Время: 0.03 c
11-1137965443
Flea
2006-01-23 00:30
2006.11.12
Hottrack для TabControl


2-1162118210
ymy1
2006-10-29 13:36
2006.11.12
неиспользуемое в классе


15-1161596313
clickmaker
2006-10-23 13:38
2006.11.12
Мужики, посоветуйте UML-редактор для виндов


15-1161960379
IMHO
2006-10-27 18:46
2006.11.12
Сервисы ICQ


2-1161842283
XTD
2006-10-26 09:58
2006.11.12
Посоветуйте хорошую компоненту по работе с *.DBF базами.