Троан Эрик В.
Шрифт:
17.7. Ошибки сокетов
Некоторые значения
EADDRINUSE | Запрашиваемый адрес уже используется и не может быть переприсвоен. |
EADDRNOTAVAIL | Запрашивается несуществующий адрес. |
EAFNOSUPPORT | Указано неподдерживаемое семейство адресов. |
ECONNABORTED | Соединение прервано программным обеспечением. |
ECONNREFUSED | Удаленная машина отклонила попытку соединения. |
ECONNRESET | Соединение переустановлено удаленным концом. Это, как правило, указывает на то, что удаленная машина была перезагружена. |
EDESTADDRREQ | Выполнена попытка передачи данных через сокет без предоставления адреса назначения. Это может происходить только в дейтаграммных сокетах. |
EHOSTDOWN | Удаленный хост не находится в сети. |
EHOSTUNREACH | Удаленный хост недоступен. |
EISCONN | Для сокета уже установлено соединение. |
EMSGSIZE | Данные, передаваемые через сокет, слишком велики для отправления в одном элементарном сообщении. |
ENETDOWN | Сетевое соединение прекратилось. |
ENETRESET | Сеть была сброшена, что вызвало потерю соединения. |
ENETUNREACH | Указанная сеть недоступна. |
ENOBUFS | Для обработки запроса доступного пространства буфера недостаточно. |
ENOPROTOOPT | Выполнена попытка установить неправильную опцию. |
ENOTCONN | До выполнения операции необходимо установить соединение. |
ENOTSOCK | Специфическая сокетная операция была направлена на файловый дескриптор, который ссылается не на сокет. |
EPFNOSUPPORT | Указано неподдерживаемое семейство протоколов. |
EPROTONOSUPPORT | Запрос был сделан для неподдерживаемого протокола. |
EPROTOTYPE | Для сокета был указан несоответствующий тип протокола. |
ESOCKTNOSUPPORT | Выполнена попытка создания неподдерживаемого типа сокета. |
ETIMEDOUT | Время соединения истекло. |
17.8. Унаследованные сетевые функции
В данный момент действует множество библиотечных функций, относящихся к работе сетей TCP/IP, которые нельзя применять в новых приложениях. Однако они широко используются в существующих IPv4-программах. В связи с этим они рассматриваются ниже для того, чтобы помочь вам понять и обновить старые коды.
17.8.1. Манипулирование IPv4-адресами
Функции
Вспомните, что
Член
145
Применение этой структуры делает невозможным расширение данных функций на IPv6 без изменения их интерфейса.
Передаваемый адрес преобразуется в строку в десятичном формате с разделительными точками, возвращается указатель на данную строку. Строка сохраняется в статическом буфере библиотеки С и уничтожается при следующем вызове
Существуют две функции, которые предлагают обратное преобразование десятичной строки в двоичный IP-адрес. Более старая из них функция
146
Функции, использующие статическую память для сохранения результатов, усложняют построение многопоточных приложений, поскольку в код приложения требуется добавлять блокировки для защиты этих статических буферов.
Функция принимает передаваемую строку, которая должна содержать десятичный IP-адрес с разделительными точками, и преобразует ее в двоичный IP-адрес.
Для исправления недостатков
Данная функция ожидает строку, содержащую десятичный IP-адрес, и размещает двоичное представление этого адреса в структуре
17.8.2. Преобразование имен хостов
Функции
Вместо того чтобы возвращать связный список, как это делает
Здесь