Форум программистов, компьютерный форум, киберфорум
C++: Сети
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.93/15: Рейтинг темы: голосов - 15, средняя оценка - 4.93
0 / 0 / 0
Регистрация: 13.11.2020
Сообщений: 1
1

смысл в "he" и "addr_list" при использовании inet_addr()

13.11.2020, 15:40. Показов 2847. Ответов 3
Метки c++ (Все метки)

Доброго времени суток, участники форума! Я недавно начал изучать C++ по следующей книге: "C++ на примерах. Практика, практика и только практика | Орленко Павел Алексеевич, Евдокимов Петр.". В конце даётся листинг программы для обмена сообщениями клиент-сервер. Некоторые строчки кода не объяснены и я не могу найти никакой информации по ним в интернете.
Есть следующие строки кода:

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
if (inet_addr(address.c_str())==-1){
        struct hostent *he;//?
        struct in_addr **addr_list;//?
        if ((he=gethostbyname(address.c_str()))==NULL){
            herror("gethostbyname");
            cout<<"Failed to resolve hostname\n";
            return false
        }
        addr_list = (struct in_addr **) he->h_addr_list;
        for(int i = 0; addr_list[i]!=NULL;i++){
            server.sin_addr= *addr_list[i];
            break;
        }
    }


Вопросы: что за переменные "he" и "addr_list", к значениям которых обращаются структуры "hostent" и "in_addr"? И почему нужен двойной указатель для "addr_list"?
0

Помощь в написании контрольных, курсовых и дипломных работ здесь.

Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
13.11.2020, 15:40
Ответы с готовыми решениями:

Смысл getenv("QUERY_STRING")
Здравствуйте! Есть задача: создать exe с содержимым &quot;hello,world&quot;, которое отобразится при...

Перестает "работать" сервер при повторном подключении клиента
Здравствуйте! Я совершенно недавно начал изучение С++ по этому столкнулся с проблемой которую не...

"Первый блин" при работе с сокетами
Всем здрасьте. Начал учится работы с сокетами. Конечная цель: автоматизация процессов через порт...

В зависимости от времени года "весна", "лето", "осень", "зима" определить погоду "тепло", "жарко", "холодно", "очень холодно"
В зависимости от времени года &quot;весна&quot;, &quot;лето&quot;, &quot;осень&quot;, &quot;зима&quot; определить погоду &quot;тепло&quot;,...

3
2063 / 997 / 378
Регистрация: 08.11.2016
Сообщений: 2,863
13.11.2020, 17:04 2
he - указатель на переменную типа struct hostent - это структура содержащая информацию о сетевом узле, в частности список сетевых адресов в поле h_addr_list подробности.

указатель на указатель нужен потому, что это массив си-строк
1
15108 / 8108 / 1958
Регистрация: 30.01.2014
Сообщений: 13,774
17.11.2020, 00:54 3
Цитата Сообщение от Annemesski Посмотреть сообщение
это массив си-строк
Это не массив си-строк
Это "массив" generic-указателей на нечто (в данном случае на структуру in_addr). Использование char* осталось с времен, когда в Си не было void*.

Добавлено через 2 минуты
Цитата Сообщение от Akira_htk Посмотреть сообщение
могу найти никакой информации
Тыц (ссылку на pdf давать не буду, т.к. это запрещено правилами, но книгу уже не купить даже с рук, поэтому другого выхода у вас нет, кроме как найти и скачать).

Добавлено через 4 минуты
Меня, кстати, знатно возмущает тот факт, что издательство "Питер" из года в год переиздает совершенно гадкую книгу Лафоре, а всемирно признанную классику игнорирует (я даже пробовал связываться с ними по этому поводу, но ответа так и не дождался).
2
2063 / 997 / 378
Регистрация: 08.11.2016
Сообщений: 2,863
17.11.2020, 09:23 4
Цитата Сообщение от DrOffset Посмотреть сообщение
Это не массив си-строк
Таки да, данке - поправили.
Цитата Сообщение от DrOffset Посмотреть сообщение
но книгу уже не купить даже с рук
Судя по описанию и отзывам, книга - супер. Возьму на заметку... даже в O3 нет, последнее издание от 2007 г., жаль, придется цифрой перебиваться.
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
17.11.2020, 09:23

"Необработанное исключение в "0x00417c85" в "oui2.exe": 0xC0000005: Нарушение прав доступа при чтении "0x00000000"."
Пишем программу в VS 2010 на С++ DirectX SDK (June 2010). Доходя до одной строчки появляется...

Проблема с преобразованием "буквенных" цифр в "настоящие" цифры при использовании atof
Господа, дамы. Имеется проблема. Главная из которых заключается в том, что я не программист. А...

Для каждой строки найти слова, которые не имеют ни одного из букв: "l", "k", "r", "s" i "j"
Задано символьные строки. Строка состоит из нескольких слов (наборов символов), которые разделяются...

Ошибка при использовании OlePropertyGet("Documents").OleProcedure("Add")
При использовании следующего кода: Word = CreateOleObject(&quot;Word.Application.8&quot;);...

Реализовать классы "Воин", "Пехотинец", "Винтовка", "Матрос", "Кортик" (наследование)
Разработать программу с использованием наследования классов, реализующую классы: − воин;...

Необработанное исключение в "0x00a78659" в "First.exe": 0xC0000005: Нарушение прав доступа при записи "0x0189f000"
Здравствуйте, вот столкнулся с ошибкой и не могу понять в чем причина, вроде все правильно сделал....


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

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Опции темы

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