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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 08.08.2011, 19:51   #1
KWN, lnc
Delphi 7
Форумчанин
 
Аватар для KWN, lnc
 
Регистрация: 10.02.2009
Сообщений: 354
Восклицание Ваш IP адрес

как узнать свой IP адрес как здесь http://2ip.ru/
IP адрес компьютера это одно а IP адрес 2ip.ru это другое..
Дайте мне власть и я переверну ваш мир!...
KWN, lnc вне форума Ответить с цитированием
Старый 08.08.2011, 19:54   #2
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

сделать запрос на сайт и узнать свой внешний IP, пропарсив ответ.
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 08.08.2011, 20:47   #3
mss
Заблокирован
 
Регистрация: 27.05.2010
Сообщений: 1,099
По умолчанию

Цитата:
IP адрес компьютера это одно
Это ни разу ни одно.
У компьютера НЕТ "IP адреса". Вообще нет. Совсем нет.
mss вне форума Ответить с цитированием
Старый 09.08.2011, 23:30   #4
record222
Форумчанин
 
Регистрация: 23.09.2009
Сообщений: 127
По умолчанию

Можно вот так:
Код:
uses
  WinSock;

function GetLocalIP: String;
const WSVer = $101;
var
  wsaData: TWSAData;
  P: PHostEnt;
  Buf: array [0..127] of Char;
begin
  Result := '';
  if WSAStartup(WSVer, wsaData) = 0 then begin
    if GetHostName(@Buf, 128) = 0 then begin
      P := GetHostByName(@Buf);
      if P <> nil then Result := iNet_ntoa(PInAddr(p^.h_addr_list^)^);
    end;
    WSACleanup;
  end;
end;
можно вот так:
Код:
function my_ip_address: longint;
const
  bufsize = 255;
var
  buf: pointer;
  RemoteHost: PHostEnt; (* Не освобождайте это! *)
begin
  buf := nil;
  try
    getmem(buf, bufsize);
    winsock.gethostname(buf, bufsize); (* это может работать и без сети *)
    RemoteHost := Winsock.GetHostByName(buf);
    if RemoteHost = nil then
      my_ip_address := winsock.htonl($07000001) (* 127.0.0.1 *)
    else
      my_ip_address := longint(pointer(RemoteHost^.h_addr_list^)^);
  finally
    if buf <> nil then
      freemem(buf, bufsize);
  end;
  result := winsock.ntohl(result);
end;
А еще можно вот так:
Код:
Function TForm1.GetLocalIP : String;
Var WSAData: TWSAData;
 P: PHostEnt;
Name: array[0..$FF] of Char;
Begin
WSAStartup($0101, WSAData);
 GetHostName(Name, $FF);
 P := GetHostByName(Name);
 Result := inet_ntoa(PInAddr(P.h_addr_list^)^);
WSACleanup;
End;
Способ 4
Кидаем на форму ipwatch из вкладки indy misc
Потом кидаем button
Пишем обработчик
Код:
procedure TForm1.Button1Click(Sender: TObject);
begin
Button1.Caption:=IdIPWatch1.LocalIP;
end;

Последний раз редактировалось record222; 09.08.2011 в 23:39.
record222 вне форума Ответить с цитированием
Старый 10.08.2011, 00:29   #5
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

внутренний IP(внутрисетевой он же локальный) и внешний IP это всетаки разное.
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 10.08.2011, 14:18   #6
record222
Форумчанин
 
Регистрация: 23.09.2009
Сообщений: 127
По умолчанию

Цитата:
Сообщение от Пепел Феникса Посмотреть сообщение
внутренний IP(внутрисетевой он же локальный) и внешний IP это всетаки разное.
Я знаю, привел несколько примеров. Если уж внешний ip, то можно спарсить с любого сайта который вывод IP(2ip.ru или myip.ru). Либо создать на своем php сайте скрипт, с кодом.
$_SERVER[REMOTE_ADDR];
Потом с помощью функции print выводить.
А в программе просто делать запрос на эту страницу...
record222 вне форума Ответить с цитированием
Старый 11.08.2011, 19:50   #7
Alter
Старожил
 
Аватар для Alter
 
Регистрация: 06.08.2007
Сообщений: 2,239
По умолчанию

Такое пойдет?
Код:
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, IdBaseComponent, IdComponent, IdTCPConnection,
  IdTCPClient, IdHTTP;

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

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
Const
 Pars :Array[0..1]of String=('<html><head><title>Current IP Check</title></head><body>Current IP Address: ',
                             '</body></html>');
var S :String;
begin
  Edit1.Clear;
 S := IdHTTP1.Get('http://ddns.cis.by/nic/');
 Delete(S, 1, Length(Pars[0]));
 Delete(S, Pos(Pars[1], S), Length(Pars[1])+1);
  Edit1.Text := S;
end;

end.
Alter вне форума Ответить с цитированием
Старый 23.08.2011, 00:48   #8
KWN, lnc
Delphi 7
Форумчанин
 
Аватар для KWN, lnc
 
Регистрация: 10.02.2009
Сообщений: 354
По умолчанию

а вот я сделал для http://2ip.ru/

Код:
procedure TForm1.Button1Click(Sender: TObject);
var
  s, e: string;
begin
  s := IdHTTP1.Get('http://2ip.ru');
  e := Copy(s, pos('<big>', s) + 5, pos('</big>', s) - pos('<big>', s) - 5);
 Form1.Caption := e;
end;
может комуто пригодиться!
А так тему можно закрывать!
Дайте мне власть и я переверну ваш мир!...

Последний раз редактировалось KWN, lnc; 23.08.2011 в 00:51.
KWN, lnc вне форума Ответить с цитированием
Старый 23.08.2011, 01:16   #9
Once
Пользователь
 
Регистрация: 21.08.2011
Сообщений: 14
По умолчанию

А можно ещё проще и без парса.. есть чудо страничка
Достаточно вывести результат гет запроса по адресу
http://automation.whatismyip.com/n09230945.asp
и увидим внешний ип )
Once вне форума Ответить с цитированием
Ответ


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

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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Ваш любимый ЯП Sna1L Общие вопросы по программированию, компьютерный форум 35 06.07.2011 07:48
Какой браузер ваш Spellsinger Софт 64 23.02.2009 12:23
как узнать ip адрес зная mac адрес Roman Работа с сетью в Delphi 9 25.06.2007 12:39