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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 10.03.2012, 14:27   #1
maloun
Форумчанин
 
Аватар для maloun
 
Регистрация: 03.01.2011
Сообщений: 233
По умолчанию нужен ip, но мешает роутер

Добрый всем денёчек...
Мне нужен ip моего компьютера без использования сайтов типа 2ip.ru, раньше этот вопрос решался c помощью функций из юнита GetIP.pas который я нашёл где-то на этом форуме, а теперь у меня стоит роутер и функция возвращает нули, на странице роутера http://192.168.0.1 в сетевой статистике можно этот ip узнать вручную, но нужно программно, а на роутере ещё и пароль стоит... Очень нехочу парсить ответы серверов типа 2ip.ru, а вдруг сервер закроют?
пыжок
maloun вне форума Ответить с цитированием
Старый 10.03.2012, 15:12   #2
_SERGEYX_
Участник клуба
 
Аватар для _SERGEYX_
 
Регистрация: 07.07.2007
Сообщений: 1,518
По умолчанию

А вот эта функция что вернет? ... с роутером не пробовал

Код:
uses WinSock;

function GetIP: string;
var
  wVerReq: WORD;
  wsaData: TWSAData;
  i: PAnsiChar;
  h: PHostEnt;
  c: array [0 .. 128] of char;
begin
  wVerReq := MAKEWORD(1, 1);
  WSAStartup(wVerReq, wsaData);
  GetHostName(@c, 128);
  h := GetHostByName(@c);
  i := iNet_ntoa(PInAddr(h^.h_addr_list^)^);
  Result := i;
  WSACleanup;
end;

procedure TForm1.RzBitBtn1Click(Sender: TObject);
begin
  ShowMessage(GetIP);
end;
_SERGEYX_ вне форума Ответить с цитированием
Старый 13.03.2012, 21:54   #3
maloun
Форумчанин
 
Аватар для maloun
 
Регистрация: 03.01.2011
Сообщений: 233
По умолчанию

возвращает статический ip роутера 192.168.0.123
я пользоволся скачанной откуда-то процедурой которая возвращает тоже самое и имеет следующий код:
Код:
...
uses
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
  StdCtrls, winSock;

type
  TForm1 = class(TForm)
    Button1: TButton;
    Edit1: TEdit;
    Edit2: TEdit;
    Edit3: TEdit;
    Edit4: TEdit;
    procedure Button1Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.DFM}

procedure TForm1.Button1Click(Sender: TObject);
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);
  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
    TEdit(FindComponent('Edit'+IntToStr(i+1))).Text:=inet_ntoa(pptr^[I]^);
    Inc(I);
  end;
  WSACleanup;
end;
без роутера просто замечательно работает...
возвращает внутренний и внешние ip адресса и наверное предусмотренна для чего-то большего, но последние два Edit'a всегда пусты
пыжок

Последний раз редактировалось maloun; 13.03.2012 в 21:57.
maloun вне форума Ответить с цитированием
Старый 13.03.2012, 22:57   #4
raxp
Старожил
 
Регистрация: 29.09.2009
Сообщений: 9,713
По умолчанию

Цитата:
Очень нехочу парсить ответы серверов типа 2ip.ru, а вдруг сервер закроют
а придется ...несколько сервисов проверяйте для резерву.
Разработки и научно-технические публикации :: Видеоблог :: Твиттер
Radar systems engineer & Software developer of industrial automation
raxp вне форума Ответить с цитированием
Старый 14.03.2012, 01:09   #5
Человек_Борща
Старожил
 
Аватар для Человек_Борща
 
Регистрация: 30.12.2009
Сообщений: 11,426
По умолчанию

Или проще взять whois и смотреть IP там?

Боитесь, что закроют, берите 10-20 хуиз-серверов.. и в случает отказа одного из них берите другой..

Последний раз редактировалось Человек_Борща; 14.03.2012 в 01:13.
Человек_Борща вне форума Ответить с цитированием
Старый 15.03.2012, 18:19   #6
maloun
Форумчанин
 
Аватар для maloun
 
Регистрация: 03.01.2011
Сообщений: 233
По умолчанию

Цитата:
Сообщение от Человек_Борща Посмотреть сообщение
Или проще взять whois и смотреть IP там?

Боитесь, что закроют, берите 10-20 хуиз-серверов.. и в случает отказа одного из них берите другой..
эта гениальная мысль уже посещала меня, если всё будет очень плохо - так и сделаю...

но! почему никто не говорит о моём роутере?
это ведь он получает ip при подключении и он же хранит ip...
неужели невозможно взять ip у роутера?
или я бред несу?
пыжок

Последний раз редактировалось maloun; 15.03.2012 в 18:22.
maloun вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Клиент-серверное приложение, мешает роутер Бутерброд C/C++ Сетевое программирование 1 25.02.2012 19:51
Нужен роутер stenl1 Компьютерное железо 8 06.12.2011 01:01
Нужен роутер stenl1 Компьютерное железо 13 29.08.2011 12:26
uTorrent мешает доступу в интернет Аватар Софт 2 03.05.2011 00:43