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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 13.12.2007, 12:54   #1
RKS
Пользователь Подтвердите свой е-майл
 
Аватар для RKS
 
Регистрация: 15.08.2007
Сообщений: 21
Сообщение Определение IP

Здравствуйте Уважаемые Форумчане!
Как определить свой внешний IP? Написал чат, он нормально работал, пока я не поставил DSL, теперь определается только локальный адрес (192.168.1.2 ). Использую вот эту процедуру:
*********************************** *******
procedure TGF.getipandhost;
var
wVerReq: WORD;
wsaData: TWSAData;
i: pchar;
h: PHostEnt;
c: array[0..128] of char;
begin
wVerReq := MAKEWORD(1, 1);
WSAStartup(wVerReq, wsaData);
//хост
GetHostName(@c, 128);
h := GetHostByName(@c);
//IP
i := iNet_ntoa(PInAddr(h^.h_addr_list^)^ );
IPaddr.text := i;
WSACleanup;
end;
*********************************** **
На Dial-up'е проблем не было..
RKS вне форума Ответить с цитированием
Старый 13.12.2007, 13:11   #2
RKS
Пользователь Подтвердите свой е-майл
 
Аватар для RKS
 
Регистрация: 15.08.2007
Сообщений: 21
По умолчанию

попробовал это код , не помогает, все равно 192.1681.2:

Код:
 
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;   
  
procedure TForm1.Button1Click(Sender: TObject);

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

Поиском пользоваться не пробовали ?
http://programmersforum.ru/showthread.php?t=9050
ICQ не для вопросов, а для предложений. Для вопросов используйте форум
IRC канал клуба программистов|Мои статьи
Квэнди вне форума Ответить с цитированием
Старый 13.12.2007, 15:43   #4
RKS
Пользователь Подтвердите свой е-майл
 
Аватар для RKS
 
Регистрация: 15.08.2007
Сообщений: 21
По умолчанию

Пробовал , пример помог.
RKS вне форума Ответить с цитированием
Ответ


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

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
определение ip-адресса Ермоленко Виктор Помощь студентам 0 02.06.2008 13:44
Определение IP IvanLex HTML и CSS 6 28.03.2008 07:46
Определение IP IvanLex Общие вопросы по Java, Java SE, Kotlin 1 19.02.2008 09:12
Определение местоположения по IP Zer0 Работа с сетью в Delphi 8 27.12.2007 10:56
из Паскаля определить запущен ли Windows Трофимов Александр Паскаль, Turbo Pascal, PascalABC.NET 9 14.06.2007 15:25