Модераторы: feodorv
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Hostname, gethostbyname() 
:(
    Опции темы
n1ke
Дата 7.12.2006, 01:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 26
Регистрация: 3.12.2006

Репутация: нет
Всего: нет



Всем привет!
Мне нужно получить адресс удаль. узла введя его домен!

Например вот так:
./gethost www.google.com
<IP>


Код

if (inet_aton (argv[1], &sin.sin_addr) == 0) {
        struct hostent *he;
        he = gethostbyname (argv[1]);
        if (!he) {
            printf("Host not found\n");
            return;
        }
        printf ("%s\n", inet_ntoa (*(struct in_addr *) (he->h_addr)));
    }


Беда в том что компилер (GCC) выдает ошибку:
error: dereferencing pointer to incomplete type
в строке:
printf ("%s\n", inet_ntoa (*(struct in_addr *) (he->h_addr)));

Plzz Help!


Это сообщение отредактировал(а) n1ke - 7.12.2006, 01:39
PM   Вверх
witex
Дата 8.12.2006, 01:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 224
Регистрация: 16.10.2006
Где: Эстония

Репутация: 1
Всего: 4



 printf ("%s\n", inet_ntoa (*(sockaddr * *) (he->h_addr)));

попробуй так!

Это сообщение отредактировал(а) witex - 8.12.2006, 04:02
--------------------
Я не волшебник, я только учусь."Шлёпни в Гугл" - Афтор Былов Ю.М. 
PM MAIL   Вверх
ptr
Дата 8.12.2006, 07:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 661
Регистрация: 31.5.2006
Где: Новосибирск

Репутация: 9
Всего: 14



Код

if (inet_aton (argv[1], &sin.sin_addr) == 0) {

Не понял. Это зачем? И не стоит так (sin) называть переменные.

Код

printf ("%s\n", inet_ntoa (*(struct in_addr *) (he->h_addr)));

Тут вроде правильно.

Приведи больше кода.


--------------------
Единственный способ определить границы возможного - это выйти за эти границы, в невозможное.
Артур Кларк.
PM MAIL ICQ   Вверх
n1ke
Дата 8.12.2006, 20:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 26
Регистрация: 3.12.2006

Репутация: нет
Всего: нет



Ребята, спасибо что не бросили меня в беде, но тут я  сам лоханулся! Код правильний, я просто не добавил #include <netdb.h>

Вот корректний образец:
Код

#include <stdio.h>
#include <sys/socket.h>
#include <sys/types.h>
#include <netdb.h>

int main (int argc, char *argv[]){
    int i;
    struct hostent *he;    // Host info
    struct in_addr **addr_list;
    struct in_addr addr;

// get the addresses of host you typеd in:

    he = gethostbyname (argv[1]);
    if (he == NULL) { // do some error checking
        perror ("gethostbyname");
        return;
    }

// print information about this host:
    printf ("Official name is: %s\n", he->h_name);
    printf ("IP address: %s\n", inet_ntoa(*(struct in_addr*)he->h_addr));
    printf ("All addresses: ");
    addr_list = (struct in_addr **)he->h_addr_list;
    for (i=0; addr_list[i] != NULL; i++) {
        printf ("\n\t%d) %s", i+1, inet_ntoa (*addr_list[i]));
    }
    printf ("\n");

// get the host name of IP, for example, 80.249.11.192:

    inet_aton ("80.249.11.192", &addr);
    he = gethostbyaddr (&addr, sizeof(addr), AF_INET);
    printf ("My hostname: %s\n", he->h_name);
}




To ptr:
Код

if (inet_aton (argv[1], &sin.sin_addr) == 0) {

Eто проверяет является ли введеный тобой адресс IP адресом или хостнеймом!
PM   Вверх
ptr
Дата 9.12.2006, 11:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 661
Регистрация: 31.5.2006
Где: Новосибирск

Репутация: 9
Всего: 14



Цитата(n1ke @  8.12.2006,  23:56 Найти цитируемый пост)
Eто проверяет является ли введеный тобой адресс IP адресом или хостнеймом!

Оригинальное решение smile . Правда бесмысленное.


--------------------
Единственный способ определить границы возможного - это выйти за эти границы, в невозможное.
Артур Кларк.
PM MAIL ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Сети | Следующая тема »


 




[ Время генерации скрипта: 0.0423 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.