Шрифт:
Эта программа корректно работает на узле с единственным IP-адресом. Если запустить программу из листинга 11.1 на узле с четырьмя IP-адресами, то получим:
Но если запустить программу из листинга Д.4 на том же узле, в выводе будет только первый IP-адрес:
Проблема заключается в том, что две функции,
11.2. Если ваша система не поддерживает повторно входимую версию функции
11.3. Сервер
11.4. Эта возможность поддерживается некоторыми распознавателями, но переносимая программа не может использовать ее, потому что POSIX никак ее не оговаривает. В листинге Д.5 приведена измененная версия. Порядок тестирования строки с именем узла имеет значение. Сначала мы вызываем функцию
Если строка является допустимым IP-адресом в точечно-десятичной записи, мы создаем свой массив указателей (
Поскольку адрес уже был переведен в двоичное представление в структуре адреса сокета, мы заменяем вызов функции