Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Работа с сетью в Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 12.11.2007, 20:44   #1
Enemy
 
Регистрация: 12.11.2007
Сообщений: 4
По умолчанию Внешний Ip

Как програмно узнать свой внешний IP?? Очень нужно помогите Please!
Enemy вне форума Ответить с цитированием
Старый 13.11.2007, 07:51   #2
zetrix
Delphi/C++/C#
Участник клуба
 
Аватар для zetrix
 
Регистрация: 29.10.2006
Сообщений: 1,972
По умолчанию

Хоть и написано что LOCAL IP, но у меня выдаёт внешний:
Код:
//В нагрузку выдаёт ещё и имя хоста
function GetLocalIPFromHost(var HostName, IPaddr, WSAErr: string): Boolean;
type
  Name = array[0..100] of Char;
  PName = ^Name;
var
  HEnt: pHostEnt;
  HName: PName;
  WSAData: TWSAData;
  i: Integer;
begin
  Result := False;
  if WSAStartup($0101, WSAData) <> 0 then
    begin
    WSAErr := 'Winsock is not responding."';
    Exit;
    end;
  IPaddr := '';
  New(HName);
  if GetHostName(HName^, SizeOf(Name)) = 0 then
    begin
    HostName := StrPas(HName^);
    HEnt := GetHostByName(HName^);
    for i := 0 to HEnt^.h_length - 1 do IPaddr :=Concat(IPaddr,IntToStr(Ord(HEnt^.h_addr_list^[i])) + '.');
    SetLength(IPaddr, Length(IPaddr) - 1);
    Result := True;
    end
  else
   begin
    case WSAGetLastError of
      WSANOTINITIALISED:WSAErr:='WSANotInitialised';
      WSAENETDOWN      :WSAErr:='WSAENetDown';
      WSAEINPROGRESS   :WSAErr:='WSAEInProgress';
    end;
   end;
   Dispose(HName);
   WSACleanup;
end;

...
var ipad,hostname,err:string;
begin
if GetLocalIPFromHost(ipad,hostname,err) then label1.Caption:=hostname+' : '+ipad;
end;
И ещё: использовано WinSock2!
zetrix вне форума Ответить с цитированием
Старый 13.11.2007, 12:52   #3
Квэнди
Старожил
 
Аватар для Квэнди
 
Регистрация: 13.12.2006
Сообщений: 3,859
По умолчанию

Самое простое если тебе нужно узнать свой IP за NAT-ом, парси страницу на одном из многочисленных сервисов в интенрнете, которые сообщают внешний IP
ICQ не для вопросов, а для предложений. Для вопросов используйте форум
IRC канал клуба программистов|Мои статьи
Квэнди вне форума Ответить с цитированием
Старый 20.11.2007, 01:00   #4
Stanislav
Квадрокоптерист
Участник клуба Подтвердите свой е-майл
 
Регистрация: 29.09.2007
Сообщений: 1,824
По умолчанию

Я думаю тебе это поможет держи исходники:
Вложения
Тип файла: rar 1.rar (174.5 Кб, 152 просмотров)
Я часть той силы, что вечно хочет зла, но вечно совершает благо..

Последний раз редактировалось Stanislav; 20.11.2007 в 01:25. Причина: Изменил вложение
Stanislav вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц