Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Определение ip

13K
11 апреля 2006 года
gavrosh
19 / / 09.04.2006
Знаю, что заезженная тема, но нашел несколько примеров и ничего не получается. Помогите...
1.8K
12 апреля 2006 года
SeregaLBN
62 / / 03.10.2003
Код:
#include <WinSock.h>
#pragma comment(lib, "ws2_32")

CString GetIPAdress() {
   HOSTENT *he = NULL;
   BYTE *IP = NULL;
   char name[0xFF];

   gethostname(name, sizeof(name));
   he = gethostbyname(name);
   if(he) {
      IP = (BYTE *)he->h_addr_list[0];
   }
   if (IP)
      return ::Format(_T("%i.%i.%i.%i"), int(IP[0]), int(IP[1]), int(IP[2]), int(IP[3]));
   else
      return CString();
}

CString GetHostName() {
   HOSTENT *he = NULL;
   BYTE *IP = NULL;
   char name[0xFF];

   gethostname(name, sizeof(name));
   he = gethostbyname(name);
   return he ? he->h_name : NULL;
}
344
12 апреля 2006 года
Delpher
493 / / 14.08.2005
Цитата:
Originally posted by gavrosh
Знаю, что заезженная тема, но нашел несколько примеров и ничего не получается. Помогите...



Код:
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;



Код:
Host: TLabel;
IPaddr: TLabel;
...
uses Winsock;
...
procedure TForm1.FormCreate(Sender: TObject);
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);
  Host.Caption := h^.h_Name; //Host отображает хост(имя) компьютера
  {Достаем IP}
  i := iNet_ntoa(PInAddr(h^.h_addr_list^)^);
  IPaddr.Caption := i; //Теперь IPaddr отображает IP-адрес
  WSACleanup;
end;





Код:
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;
13K
13 апреля 2006 года
gavrosh
19 / / 09.04.2006
Цитата:
Originally posted by SeregaLBN
Код:
#include <WinSock.h>
#pragma comment(lib, "ws2_32")

CString GetIPAdress() {
   HOSTENT *he = NULL;
   BYTE *IP = NULL;
   char name[0xFF];

   gethostname(name, sizeof(name));
   he = gethostbyname(name);
   if(he) {
      IP = (BYTE *)he->h_addr_list[0];
   }
   if (IP)
      return ::Format(_T("%i.%i.%i.%i"), int(IP[0]), int(IP[1]), int(IP[2]), int(IP[3]));
   else
      return CString();
}

CString GetHostName() {
   HOSTENT *he = NULL;
   BYTE *IP = NULL;
   char name[0xFF];

   gethostname(name, sizeof(name));
   he = gethostbyname(name);
   return he ? he->h_name : NULL;
}


Поясните следующую строку return ::Format(_T("%i.%i.%i.%i"), int(IP[0]), int(IP[1]), int(IP[2]), int(IP[3]));

243
14 апреля 2006 года
pacific_7
1.9K / / 06.09.2004
Цитата:
Originally posted by gavrosh
Знаю, что заезженная тема, но нашел несколько примеров и ничего не получается. Помогите...


Автору: советую узнать о существовании сайта http://msdn.microsoft.com на котором есть вот это: http://msdn.microsoft.com/library/default.asp?url=/library/en-us/iphlp/iphlp/getadaptersinfo.asp
Советчикам: не изобретать лишний раз велосипед. К тому же с не очень круглыми колесами и побольше изучать тот же сайт.

ЗЫ Если не очень понятна ссылка, то могу привести рабочий пример, но хочется, что бы ты сам всё понял.

13K
14 апреля 2006 года
gavrosh
19 / / 09.04.2006
Спасибо за помощь, а сам я уже сделал, проанализировав предыдущие примеры. А на msdn я не захожу, потому что есть help от Билдера. Кстати, функцию которую ты дал легче использовать. Так что еще раз спасибо.
243
14 апреля 2006 года
pacific_7
1.9K / / 06.09.2004
Цитата:
Originally posted by gavrosh
Кстати, функцию которую ты дал легче использовать. Так что еще раз спасибо.


Не только легче, но и правильнее. Потому и говорю, что ходи на msdn почаще. Еще стоит учесть, что msdn обновляется время от времени, в отличии от справки билдера и там многое не написано.

13K
15 апреля 2006 года
gavrosh
19 / / 09.04.2006
Уже заметил, а можно где-н заказать диск с msdn?
243
15 апреля 2006 года
pacific_7
1.9K / / 06.09.2004
Цитата:
Originally posted by gavrosh
Уже заметил, а можно где-н заказать диск с msdn?


Хм... Наверное на http://microsoft.com - честно говоря, ни когда не задумывался о том, что бы его заказать. Хотел когда то купить, даже нашел в магазе, естественно пиратский :), но потом надобность в нем отпала с появлением качественного инета.

Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог