Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 2006.11.12;
Скачать: [xml.tar.bz2];

Вниз

Как узнать внешний 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;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.47 MB
Время: 0.049 c
2-1161690660
RomanH
2006-10-24 15:51
2006.11.12
Сортировка IBDataSet а


4-1151488606
pioner85
2006-06-28 13:56
2006.11.12
Как обработать события клика по balloon tips (вспл. посдк.win xp)


5-1142545792
Суслик
2006-03-17 00:49
2006.11.12
Документация в сети по разработке OpenTools


15-1161790654
Kerk
2006-10-25 19:37
2006.11.12
Пиво. Ice.


2-1162114969
Серый
2006-10-29 12:42
2006.11.12
Таймер





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский