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

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

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

Восстановить пароль

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

Ответ
 
Опции темы Поиск в этой теме
Старый 16.01.2011, 10:46   #1
dmitriegorovih
Ещё не
Форумчанин
 
Аватар для dmitriegorovih
 
Регистрация: 04.01.2010
Сообщений: 517
По умолчанию Узнать клиентовский ip

Всем доброго времени суток! как узнать вот этот ip???
Изображения
Тип файла: jpg Безимени-1.jpg (91.4 Кб, 117 просмотров)
Воображение важнее, чем знания. (Albert Einstein)
dmitriegorovih вне форума Ответить с цитированием
Старый 16.01.2011, 12:04   #2
veniside
Старожил
 
Регистрация: 03.01.2011
Сообщений: 2,508
По умолчанию

Код:
gethostbyname('');
айпишнегов может быть несколько, кстати.
"Когда приходит положенное время, человек перестаёт играть в пинбол. Только и всего."
veniside вне форума Ответить с цитированием
Старый 16.01.2011, 12:19   #3
dmitriegorovih
Ещё не
Форумчанин
 
Аватар для dmitriegorovih
 
Регистрация: 04.01.2010
Сообщений: 517
По умолчанию

Цитата:
gethostbyname('');
чёт я не пойму как функцией пользоваться пробовал вот так но не работает
Код:
showmessage(pchar(gethostbyname('WAN (PPP/SLIP) Interface').h_addr));
Воображение важнее, чем знания. (Albert Einstein)
dmitriegorovih вне форума Ответить с цитированием
Старый 17.01.2011, 12:10   #4
veniside
Старожил
 
Регистрация: 03.01.2011
Сообщений: 2,508
По умолчанию

Имя хоста должно быть '' (пустая строка).
"Когда приходит положенное время, человек перестаёт играть в пинбол. Только и всего."
veniside вне форума Ответить с цитированием
Старый 17.01.2011, 13:10   #5
dmitriegorovih
Ещё не
Форумчанин
 
Аватар для dmitriegorovih
 
Регистрация: 04.01.2010
Сообщений: 517
По умолчанию

Цитата:
Имя хоста должно быть '' (пустая строка).
вылетает ошибка

P.S. пытался сделать так но слишком долго приходится ждать
Код:
uses ...IdBaseComponent, IdComponent, IdTCPConnection,
  IdTCPClient, IdHTTP; 


function poiskslovo(slovo_po_kotoromu_budut_iskat,text_v_kotorom_idet_poisk:string):integer;
var
s:string;
e,n:integer;
begin
result:=-1;
if (text_v_kotorom_idet_poisk='') or (slovo_po_kotoromu_budut_iskat='') then exit;
s:='';
e:=1;
n:=0;
for n:=1 to length(text_v_kotorom_idet_poisk) do begin
  if text_v_kotorom_idet_poisk[n]=slovo_po_kotoromu_budut_iskat[e] then begin
   for e:=0 to length(slovo_po_kotoromu_budut_iskat)-1 do begin
  //e:=e+1;
  s:=s+text_v_kotorom_idet_poisk[n+e];
  end;
  end;
if s=slovo_po_kotoromu_budut_iskat then begin
result:=n;
exit;
end;
if s<>slovo_po_kotoromu_budut_iskat then begin
s:='';
e:=1;
end;
  end;
  result:=-1;
end;


function vityagivanie_sredi_tegov(perviy_teg,vtroy_teg,text_gde_sovershit_poisk:string):string;
var
n,i,i2:integer;
s:string;
begin
s:='';
result:='';
if text_gde_sovershit_poisk='' then exit;
i:=-1;
i:=poiskslovo(perviy_teg,text_gde_sovershit_poisk);
i2:=poiskslovo(vtroy_teg,text_gde_sovershit_poisk);
i:=i+length(perviy_teg);
i2:=i2-2;
if i<>-1 then begin
for n:=i to i2 do begin
s:=s+text_gde_sovershit_poisk[n];
end;
end;
result:=s;
end;

function TForm1.svoi_ip: string;
var
http:Tidhttp;
kod:Tstringlist;
l:integer;
begin
http:=Tidhttp.Create(self);
kod:=Tstringlist.Create;
kod.Text:=utf8toansi(http.Get('http://www.2ip.ru'));
if kod.Text='' then begin result:=''; exit; end;
for l:=0 to kod.Count-1 do begin
if vityagivanie_sredi_tegov('<big>','/big',kod.Strings[l])<>'' then begin
result:=vityagivanie_sredi_tegov('<big>','/big',kod.Strings[l]);
end;
end;
freeandnil(http);
freeandnil(kod);
end;
Изображения
Тип файла: jpg 123.jpg (86.4 Кб, 111 просмотров)
Воображение важнее, чем знания. (Albert Einstein)

Последний раз редактировалось dmitriegorovih; 17.01.2011 в 13:12.
dmitriegorovih вне форума Ответить с цитированием
Старый 17.01.2011, 14:00   #6
veniside
Старожил
 
Регистрация: 03.01.2011
Сообщений: 2,508
По умолчанию

Ну так gethostbyname() может и nil вернуть, вобще-то )

Вот кусок рабочего кода (только для IPV4):

Код:
var
  p: PHostEnt;
  ar, arr: ^LongWord;
  result: integer;
begin
  p := gethostbyname(PAnsiChar(AnsiString('')));
  if (p = nil) then
    result := WSAGetLastError()
  else begin
    //
    ar := pointer(p.h_addr_list);
    while (0 <> ar^) do begin
      //
      arr := pointer(ar^);
      writeln(string(inet_ntoa(in_addr(arr^))));
      //
      inc(ar);
    end;
  end;
end;
"Когда приходит положенное время, человек перестаёт играть в пинбол. Только и всего."
veniside вне форума Ответить с цитированием
Старый 17.01.2011, 14:36   #7
dmitriegorovih
Ещё не
Форумчанин
 
Аватар для dmitriegorovih
 
Регистрация: 04.01.2010
Сообщений: 517
По умолчанию

Цитата:
Сообщение от veniside Посмотреть сообщение
Ну так gethostbyname() может и nil вернуть, вобще-то )

Вот кусок рабочего кода (только для IPV4):

Код:
var
  p: PHostEnt;
  ar, arr: ^LongWord;
  result: integer;
begin
  p := gethostbyname(PAnsiChar(AnsiString('')));
  if (p = nil) then
    result := WSAGetLastError()
  else begin
    //
    ar := pointer(p.h_addr_list);
    while (0 <> ar^) do begin
      //
      arr := pointer(ar^);
      writeln(string(inet_ntoa(in_addr(arr^))));
      //
      inc(ar);
    end;
  end;
end;
эх не судьба он нечего не присылает и всё-таки нет вариантов узнать ip?
Воображение важнее, чем знания. (Albert Einstein)
dmitriegorovih вне форума Ответить с цитированием
Старый 17.01.2011, 14:43   #8
veniside
Старожил
 
Регистрация: 03.01.2011
Сообщений: 2,508
По умолчанию

хм.. компилировал в консоль? если нет, то writeln() замени на showmessage()
"Когда приходит положенное время, человек перестаёт играть в пинбол. Только и всего."
veniside вне форума Ответить с цитированием
Старый 17.01.2011, 15:03   #9
dmitriegorovih
Ещё не
Форумчанин
 
Аватар для dmitriegorovih
 
Регистрация: 04.01.2010
Сообщений: 517
По умолчанию

Цитата:
хм.. компилировал в консоль? если нет, то writeln() замени на showmessage()
так и делал, нечего

кстати он мне возвращает nil
Воображение важнее, чем знания. (Albert Einstein)
dmitriegorovih вне форума Ответить с цитированием
Старый 17.01.2011, 15:07   #10
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Напиши
Код:
writeln('error=', WSAGetLastError())
В коде там, и узнаешь код ошибки. (У меня например 10093 вылезла)
Кста, а тут был:http://www.delphiworld.narod.ru/base/get_own_ip.html
?
По крайней мере тот пример по ссылке у меня работает норм (и я даже знаю почему)
I'm learning to live...

Последний раз редактировалось Stilet; 17.01.2011 в 15:09.
Stilet вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
узнать путь nuevegramodelamor Помощь студентам 12 13.09.2009 21:44
Узнать mac + ip BARNEY Работа с сетью в Delphi 6 21.07.2009 14:09
узнать ip hacknet Работа с сетью в Delphi 14 18.01.2009 11:55
Узнать IP Черничный Работа с сетью в Delphi 5 11.08.2008 20:36
Узнать о клике Dj_smart Работа с сетью в Delphi 0 13.05.2008 21:10