Форум программистов, компьютерный форум CyberForum.ru
Наши страницы

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
dellink
0 / 0 / 0
Регистрация: 18.12.2011
Сообщений: 48
#1

Pазрешение введенного с клавиатуры имени хоста в IP-адрес - C++

07.01.2012, 15:02. Просмотров 693. Ответов 3
Метки нет (Все метки)

Может кто знает, как выполнить разрешение введенного с клавиатуры имени хоста в IP-адрес.
Если честно я даже не совсем понимаю, что от меня требуется сделать. Может кто что-нить подскажет.
Спасибо.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
07.01.2012, 15:02
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Pазрешение введенного с клавиатуры имени хоста в IP-адрес (C++):

Адрес первого и последнего хоста в сети - C++
Собсно, из файла читается ip\mask. Нужно вывести имя первого и последнего хоста сети. Код написал но где - то ошибка, скорее всего...

Разработать программу, которая вводит адрес электронной почты и проверяет синтаксис введенного адреса - C++
В имени пользователя могут быть только следующие символы: буквы латинского алфавита, цифры, дефис (-), подчеркивание (_), точка (.),...

Поиск слова введенного с клавиатуры - C++
#include "stdafx.h" #include <iostream> #include <string> using namespace std; int main () { setlocale(LC_ALL, "rus"); ...

Вычисление выражения, введенного с клавиатуры - C++
Мне нужно написать программу на Си, представляющую собой калькулятор....Типа: Вводим с клавиатуры арифметическое выражение типа...

Элементы введенного с клавиатуры массива - C++
Программа, которая проверяет, представляют ли элементы введенного с клавиатуры массива убывающую последовательность

Обработка значения, введенного с клавиатуры - C++
Доброго времени суток. Хочу Вас попросить) Измените этот код пж так,что бы он разсчитывал значение ф-ции начиная с того Х, который...

3
taras atavin
3569 / 1752 / 91
Регистрация: 24.11.2009
Сообщений: 27,619
07.01.2012, 15:39 #2
К серверу обращайся, только он может это сделать. Или у тебя задача портировать DNS в подсеть, или локалку, для которой его ещё нет? Тогда таблица, с другого компа сваливается запрос с мнемоадресом в поле данных, ищешь соответствие и отвечаешь, адрес DNS сервера должен быть введён вручную при подключении самого компа-источника запроса к сети, или запрос рассылается вещательным пакетом, а если DNS сервер сам не знает внутреннней структуры целевого домена, то по тому же массиву как минимум должен найти адрес другого DNS сервера или, за этот домен отвечающего, или ближе по дереву к тому, который за домен отвечает и передать запрос туда. Сначала запрос можно поднять в dns сервер .ru, потом хотя бы он передаст адрес dns сервера целевого домена второго уровня, тот - адрес dns сервера целевого домена третьего уровня, тот передаст дальше, последний сервак выдаст целевой айпи. На каждом шагу сервер может или выдать адрес следующего сервера предыдущему, или сам у него спросить ещё следующий адрес.
1
easybudda
Модератор
Эксперт CЭксперт С++
9663 / 5613 / 952
Регистрация: 25.07.2009
Сообщений: 10,776
07.01.2012, 16:49 #3
dellink, пример из бестселлера всех времён и народов "UNIX разработка сетевых приложений"
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
#include <stdio.h>
#include <stdlib.h>
#include <netdb.h>
#include <arpa/inet.h>
 
#define PROG_NAME argv[0]
#define HOST_NAME argv[1]
 
int main(int argc, char ** argv){
    char buf[BUFSIZ], ** pp;
    struct hostent * hp;
    
    if ( argc < 2 ){
        fprintf(stderr, "Usage: %s host_name\n", PROG_NAME);
        exit(1);
    }
    
    if ( ! ( hp = gethostbyname(HOST_NAME) ) ){
        fprintf(stderr, "Error!\n");
        exit(1);
    }
    
    printf("Official name:\n\t%s\n", hp->h_name);
    
    printf("Aliases:\n");
    for ( pp = hp->h_aliases; *pp; ++pp )
        printf("\t%s\n", *pp);
    
    if ( hp->h_addrtype != AF_INET ){
        fprintf(stderr, "Unknown address type!\n");
        exit(1);
    }
    
    printf("IP address(es):\n");
    for ( pp = hp->h_addr_list; *pp; ++pp )
        printf("\t%s\n", inet_ntop(hp->h_addrtype, *pp, buf, sizeof(buf)));
    
    exit(0);
}
Код
andrew@debnout:~/cpp/net$ gcc -o name2ip name2ip.c 
andrew@debnout:~/cpp/net$ ./name2ip www.cyberforum.ru
Official name:
        www.cyberforum.ru
Aliases:
IP address(es):
        188.120.42.86
andrew@debnout:~/cpp/net$

Не по теме:

taras atavin, впечатляющий поток сознания!

2
dellink
0 / 0 / 0
Регистрация: 18.12.2011
Сообщений: 48
08.01.2012, 15:21  [ТС] #4
easybudda, а где здесь введение с клавиатуры?

Добавлено через 33 минуты
Как я понимаю мне нужно использовать функцию gethostbyname(), только пока не совсем понятно как...

Добавлено через 47 минут
Разобрался, если кому нужно будет:
C++
1
2
3
4
5
6
7
struct hostent *remoteHost = gethostbyname(nameHost);
printf("Official name: %s\n", remoteHost->h_name);
while (remoteHost->h_addr_list[i] != 0) 
{
    addr.s_addr = *(u_long *) remoteHost->h_addr_list[i++];
    printf("\tIP Address #%d: %s\n", i, inet_ntoa(addr));
}
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
08.01.2012, 15:21
Привет! Вот еще темы с ответами:

Проверка адреса файла, введенного с клавиатуры - C++
Мне нужно ввести адрес файла с клавиатуры и что бы проверяло, есть он или нет!!! Если есть, что бы выводило его на экран(но вывод я уже...

Проверка сортировки введенного с клавиатуры массива - C++
Написать программу, которая проверяет, представляют ли элементы введенного с клавиатуры массива возрастающую последовательность....

Как получить полный адрес по имени поля объекта класса - C++
как получить полный адрес по имени поля объекта класса ? не пересчитывая размер расположенных до него полей от начала объекта

Добавление элемента, введенного с клавиатуры, в конец очереди - C++
Помогите, пожалуйста, написать программу, которая создает очередь из элементов массива(массив читается из файла) и добавляет в конец...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
4
Yandex
Объявления
08.01.2012, 15:21
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru