Книга: UNIX: разработка сетевых приложений
Многократный вызов функции connect для сокета UDP
Многократный вызов функции connect для сокета UDP
Процесс с присоединенным сокетом UDP может снова вызвать функцию connect
Для этого сокета, чтобы:
? задать новый IP-адрес и порт;
? отсоединить сокет.
Первый случай, задание нового собеседника для присоединенного сокета UDP, отличается от использования функции connect
с сокетом TCP: для сокета TCP функция connect
может быть вызвана только один раз.
Чтобы отсоединить сокет UDP, мы вызываем функцию connect
, но присваиваем элементу семейства структуры адреса сокета (sin_family
для IPv4 или sin6_family
для IPv6) значение AF_UNSPEC
. Это может привести к ошибке EAFNOSUPPORT
[128, с. 736], но это нормально. Именно процесс вызова функции connect
на уже присоединенном сокете UDP позволяет отсоединить сокет [128, с. 787–788].
ПРИМЕЧАНИЕ
В руководстве BSD по поводу функции connect традиционно говорилось: «Сокеты дейтаграмм могут разрывать связь, соединяясь с недействительными адресами, такими как пустые адреса». К сожалению, ни в одном руководстве не сказано, что представляет собой «пустой адрес», и не упоминается, что в результате возвращается ошибка (что нормально). Стандарт POSIX явно указывает, что семейство адресов должно быть установлено в AF_UNSPEC, но затем сообщает, что этот вызов функции connect может возвратить, а может и не возвратить ошибку EAFNOSUPPORT.
- 8.11. Функция connect для UDP
- Аргументы функции в Python
- Системные переменные ROWS_AFFECTED, GDSCODE, SQLCODE, TRANSACTIONJD, CONNECTIONJD
- 3. Функции
- Новые функции API для работы с Blob и массивами
- CONNECTION TIMEOUT
- UDP characteristics
- UDP headers
- Вызов хранимых процедур InterBase с использованием стандартного синтаксиса ODBC
- TCP connections
- UDP connections
- ICMP connections