Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Сети";
Текущий архив: 2005.01.16;
Скачать: [xml.tar.bz2];

Вниз

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;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.47 MB
Время: 0.039 c
14-1104009871
SSX-Sys_Team
2004-12-26 00:24
2005.01.16
Программа - БЕС


1-1104008547
миша
2004-12-26 00:02
2005.01.16
Помогите перевести на delphi


3-1102920504
vic1
2004-12-13 09:48
2005.01.16
Динамическое создание-подключение к таблице


1-1104733591
Dream
2005-01-03 09:26
2005.01.16
Перобразование символа клавиатуры в код


14-1104406889
Карелин Артем
2004-12-30 14:41
2005.01.16
Отсылка сидюков с программой в другие регионы. Как лучше?





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский