Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2005.01.16;
Скачать: CL | DM;

Вниз

HostName   Найти похожие ветки 

 
Sicilla   (2004-10-19 17:40) [0]

Добрый день мастера! Такой вопрос. Есть IP адрес компа. Как узнать его имя, тобишь HostName? Заранее спасибо


 
Тестировщица ©   (2004-10-19 19:11) [1]

gethostbyaddr


 
Sicilla   (2004-10-19 22:25) [2]

Чего-то я не врубаюсь с параметрами этой функции. Если не трудно, то киньте кусочек кода. Заранее спасибо


 
Verg ©   (2004-10-19 22:45) [3]

var
 Host: PHostEnt;
 Addr : crdinal; // IP адрес. д.б. представлен в сетевом порядке байтов

 Host := gethostbyaddr(@Addr,            // указатель на Addr
                                   SizeOf(Addr), // размер этого Addr
                                   AF_INET       //  пароль :))) если серьезно, то здесь ты сообщаешь что за адрес содержится в Addr.В данном случае говорим, что Inetrnetwork или просто IP
                               );

 if Host <> nil then
   Host.h_name // это то, что тебе надо


 
Sicilla   (2004-10-19 23:53) [4]

Если я правильно Вас понял, то
function GetIPName(Add: string): string;
var
Host: PHostEnt;
Addr : cardinal;
begin
    addr := strtoint64(add);
    Host := gethostbyaddr(@addr,SizeOf(Addr),AF_inet);
    if Host <> nil then addr2 := Host.h_name; // это то, что тебе надо
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
    SS := edit1.Text;
    SS := IP2HEX(SS);
    label5.Caption := GetIPName(SS) ;
end;

Сетевой порядок байтов, это представление типа 192.168.1.2 в виде 3232235779? И почему у меня всегда Host = nil? Что я не так понял? Заранее спасибо


 
Verg ©   (2004-10-20 00:21) [5]

Если предположить, что Add содержит IP адрес в виде "192.168.0.2", то

> function GetIPName(Add: string): string;
> var
> Host: PHostEnt;
> Addr : cardinal;
> begin
>     addr := inet_addr( pchar(add) ); // Эта ф-ция преобразует IP из текстового вида в cardinal сразу в сетевом порядке байт
>     Host := gethostbyaddr(@addr,SizeOf(Addr),AF_inet);
>     if Host <> nil then
             Result := Host.h_name
      else
             Result := "<unknown>";

> end;


 
Verg ©   (2004-10-20 00:33) [6]


> Сетевой порядок байтов, это представление типа 192.168.1.2
> в виде 3232235779?


Сетевой порядок байт - это когда слово (4-байтное, например) распологается в памяти начиная со старшего по весу байта и так далее в порядке уменьшения старшинства в слове. (BIG_ENDIAN)
А архитектуре Intel x86, например, слова распологаются наоборот - начиная с млашего и так далее, в порядке увеличения старшинства в слове. (LITTLE_ENDIAN). Таким образом, чтобы представить слово в сетевом порядке байт на процессоре с LITTLE_ENDIAN, необходимо зеркально поменять все байты в слове местами.
для того, чтобы не заморачиваться на endian-ах, существуют фукции сетевого  ядра:

htonl, htons - для преобразования из порядка байт хоста в сетевой для 4-х и 2-х байтовых слов соотв.
ntohl, ntohs - для преобразования из сетевого порядка в порядок байт хоста.


 
Sicilla   (2004-10-20 05:42) [7]

Большое Спасибо! Но, к сожалению, на свой вопрос я решил ответить сзади :)) А моя проблема такая была. Когда я подключен к интернету, на вкладке свойства подключения есть две строки: IP сервера и IP клиента. Адрес клиента я получаю таким лбразом:
function GetIPAddress(name: string): string;
var
WSAData: TWSAData;
p: PHostEnt;
begin
WSAStartup(WINSOCK_VERSION, WSAData);
p := GetHostByName(PChar(name));
Result := inet_ntoa(PInAddr(p.h_addr_list^)^);
WSACleanup;
end;

Label2.Caption := "Ваш IP адрес: " + GetIPAddress("");


А как получить IP сервера? Я думал у них (серверов) какое-то особое одно имя, а оказалось уникальное. Заренее спасибо!


 
Sicilla   (2004-10-28 21:52) [8]

Если не трудно, кто-нибудь подскажите, плиз!


 
Piter ©   (2004-10-29 00:24) [9]

А нафига тебе нужно знать IP адрес сервера? Этот сервер будет твоим шлюзом в интернет. Он будет виден  по ipconfig /all. А вот как вытащить этот адрес - я не знаю.

Ты лучше скажи - зачем?


 
Sicilla   (2004-10-29 13:01) [10]

Что бы понять, куда я подцепился. Глупо? А нет. Мне просто это надо знать. Я подключен к А или к Б.



Страницы: 1 вся ветка

Текущий архив: 2005.01.16;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.043 c
3-1103178253
Сергей Ю.
2004-12-16 09:24
2005.01.16
Вопрос про запрос


1-1104227288
pol
2004-12-28 12:48
2005.01.16
Proxies.dcu


1-1104229516
Pavelkq
2004-12-28 13:25
2005.01.16
Файлы MS Word без установленного Ворда.


1-1104668333
byte
2005-01-02 15:18
2005.01.16
Поделитесь, если есть, опытом


14-1103821095
Mike Kouzmine
2004-12-23 19:58
2005.01.16
Ура! Наших освободили!