Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Delphi: Сети > Как определить внешний IP


Автор: Orient 15.5.2006, 01:08
Коллеги, приветствую!

Подскажите, как можно определить мой внешний IP-адрес, после соединения с интернетом?
Пытался, пробовать пример из faq по выводу все IP адресов, да толи руки у меня не от туда, толи он действительно не рабочий.

Спасибо 

Автор: RA 15.5.2006, 03:03
зайти на
http://www.whatismyip.com и пропарсить. 

или получить список всех своих IP, а какой из них используется это уже другой вопрос.

Код

Uses Winsock;

function getIPs: Tstrings;
type
  TaPInAddr = array[0..10] of PInAddr;
  PaPInAddr = ^TaPInAddr;
var
  phe: PHostEnt;
  pptr: PaPInAddr;
  Buffer: array[0..63] of Char;
  I: Integer;
  GInitData: TWSAData;
begin
  WSAStartup($101, GInitData);
  Result := TstringList.Create;
  Result.Clear;
  GetHostName(Buffer, SizeOf(Buffer));
  phe := GetHostByName(buffer);
  if phe = nil then Exit;
  pPtr := PaPInAddr(phe^.h_addr_list);
  I    := 0;
  while pPtr^[I] <> nil do
  begin
    Result.Add(inet_ntoa(pptr^[I]^));
    Inc(I);
  end;
  WSACleanup;
end;


procedure TForm1.Button1Click(Sender: TObject);
begin
Memo1.Lines := GetIps;
end;
 

Автор: Orient 15.5.2006, 08:25
А кто-нибудь знает как в этом отношении аська работает? Просто мне надо что-то подобное написать 

Автор: Orient 15.5.2006, 08:47
Попробовал код. Работает выдал мне аж три айпишника. Только вот незадача, ни один из них не соответствует тому, что выводится на сайте  :-( 

Автор: RA 15.5.2006, 09:06
значит ip-шники твои статические, а динамического у тебя нету smile можеш купить себе динамический, говорят эта услуга стоит 5 баксов.  

Автор: Orient 15.5.2006, 10:41
Да сдались они мне, покупать их   smile   Просто хотелось бы знать как же аська работает. Ей наверно тоже надо знать свой IP. Логично? 

Автор: _hunter 15.5.2006, 11:05
аська никак не работает -- ей ее сервер все сообщает 

Автор: Orient 15.5.2006, 12:12
Но ведь для того чтобы сервер ей что-то сообщил, серверу надо знать ее IP. Я разве не прав? 

Автор: Romikgy 15.5.2006, 12:30
Цитата(Orient @  15.5.2006,  09:41 Найти цитируемый пост)
Просто хотелось бы знать как же аська работает

организуешь в нете сервер, и общаешься с ним запрос-ответ, и будет как у аси smile 

Автор: Orient 15.5.2006, 12:46
Romikgy, чудесно  smile  а блин, по какому IP я буду от сервака сообщения слать?   Вся ж промблема то в том, что мне нужно выяснить свой IP в инете. 

Автор: _hunter 15.5.2006, 12:57
Цитата(Orient @  15.5.2006,  12:12 Найти цитируемый пост)
Я разве не прав?

таки не прав. данные можно получить в отает на запрос 

Автор: Orient 15.5.2006, 13:09
_hunter, согласен, но по-моему,  аська не посылает запросы серверу. Тогда бы такой трафик был...  Т.е. получается сервак сервак присылает аське сообщения, т.е. он знает ее IP  smile 

Автор: _hunter 15.5.2006, 13:17
Цитата(Orient @  15.5.2006,  13:09 Найти цитируемый пост)
но по-моему,  аська не посылает запросы серверу

это тебе только кажется.

Цитата(Orient @  15.5.2006,  13:09 Найти цитируемый пост)
Т.е. получается сервак сервак присылает аське сообщения, т.е. он знает ее IP  smile 

у меня стенкой входящие соединения запрещены. а аська работает. странно... 

Автор: N1k 15.5.2006, 14:15
Цитата(Orient @  15.5.2006,  13:09 Найти цитируемый пост)
Т.е. получается сервак сервак присылает аське сообщения, т.е. он знает ее IP

Конечно знает, во время своей работы "аська" делает как минимум одно соединение к серверу авторизации.
Если пароль соответствует номеру, то сервер авторизации выдает "аське" IP и порт для работы, после чего происходит разрыв соединения с сервером авторизации и конект к рабочему серверу.
соединение с рабочим сервером поддерживается постоянно. Закрытие означает что процедуру авторизации нужно повторить сначала.
Ну а IP присоединенного клиента я думаю определить не сложно. 

Автор: Romikgy 16.5.2006, 10:24
Цитата(Orient @  15.5.2006,  11:46 Найти цитируемый пост)
по какому IP я буду от сервака сообщения слать?

Просто все соединения айпи двунаправлены, и если ты соединяешься с сервером, то и ты можешь слать сообщения и сервер шлет тебе, 
и к асе , именно твой клиент аси запращивает " а нет ли для меня какой либо мессаги" smile 

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)