ВУЗ:
Составители:
41
};
sa_family код формата адреса;
sa_data указывает адрес гнезда, который зависит от формата. Его длина
зависит от формата и может быть более определенной длины в 14
байтов.
Формат адреса может задаваться следующими символьными именами.
Каждому имени формата соответствует символьное имя пространства имен,
начинающееся с символов ‘PF_’:
AF_LOCAL определяет формат адреса локального пространства имен,
соответствующее имя пространства имен – PF_LOCAL;
AF_UNIX синоним для AF_LOCAL, соответствующее имя пространства имен
–
PF_UNIX;
AF_FILE еще один синоним для AF_LOCAL, соответствующее имя
пространства имен – PF_FILE;
AF_INET определяет формат адреса для пространства имен Интернет,
определяемого именем PF_INET;
AF_INET6 определяет формат, идентичный AF_INET, однако соответствует
протоколу IPv6, соответствующее имя пространства имен
–
PF_INET6;
AF_UNSPEC определяет отсутствие конкретного формата адреса. Используется в
редких случаях, когда необходимо очистить адрес назначения по
умолчанию при отправлении дейтаграмм. Соответствующее имя
пространства имен PF_UNSPEC существует, но никаких причин
использования его в программе не существует.
В Linux определяются и многие другие типы сетей, большинство из которых в
настоящее время не реализованы.
Установка адреса гнезда
int bind (int SOCKET, struct sockaddr *ADDR, socklen_t LENGTH)
Функция назначает адрес гнезду SOCKET. Аргументы ADDR и LENGTH
определяют адрес. Первая часть адреса всегда определяет формат адреса. Функция
возвращает 0 в случае успеха и –1 в случае возникновения ошибки, а переменная errno
может принимать следующие значения:
EBADF аргумент SOCKET не является правильным дескриптором
файла;
ENOTSOCK дескриптор SOCKET не является гнездом;
EADDRNOTAVAIL указанный адрес не доступен на данной машине;
EADDRINUSE другое гнездо уже использует указанный адрес;
EINVAL гнездо уже имеет адрес;
EACCES нет доступа для установки адреса гнезда.
Существуют и другие коды ошибок, зависящие от используемого пространства
имен.
Чтение адреса гнезда
Для получения адреса гнезда служит функция getsockname. Прототип функции
находится в заголовочном файле <sys/socket.h>.
int getsockname (int SOCKET, struct sockaddr *ADDR, socklen_t
*LENGTH-PTR)
Функция возвращает адрес гнезда SOCKET в участки памяти, указанные
аргументами ADDR и LENGTH-PTR. Возвращаемое значение равно 0, если функция
}; sa_family код формата адреса; sa_data указывает адрес гнезда, который зависит от формата. Его длина зависит от формата и может быть более определенной длины в 14 байтов. Формат адреса может задаваться следующими символьными именами. Каждому имени формата соответствует символьное имя пространства имен, начинающееся с символов ‘PF_’: AF_LOCAL определяет формат адреса локального пространства имен, соответствующее имя пространства имен – PF_LOCAL; AF_UNIX синоним для AF_LOCAL, соответствующее имя пространства имен – PF_UNIX; AF_FILE еще один синоним для AF_LOCAL, соответствующее имя пространства имен – PF_FILE; AF_INET определяет формат адреса для пространства имен Интернет, определяемого именем PF_INET; AF_INET6 определяет формат, идентичный AF_INET, однако соответствует протоколу IPv6, соответствующее имя пространства имен – PF_INET6; AF_UNSPEC определяет отсутствие конкретного формата адреса. Используется в редких случаях, когда необходимо очистить адрес назначения по умолчанию при отправлении дейтаграмм. Соответствующее имя пространства имен PF_UNSPEC существует, но никаких причин использования его в программе не существует. В Linux определяются и многие другие типы сетей, большинство из которых в настоящее время не реализованы. Установка адреса гнезда int bind (int SOCKET, struct sockaddr *ADDR, socklen_t LENGTH) Функция назначает адрес гнезду SOCKET. Аргументы ADDR и LENGTH определяют адрес. Первая часть адреса всегда определяет формат адреса. Функция возвращает 0 в случае успеха и –1 в случае возникновения ошибки, а переменная errno может принимать следующие значения: EBADF аргумент SOCKET не является правильным дескриптором файла; ENOTSOCK дескриптор SOCKET не является гнездом; EADDRNOTAVAIL указанный адрес не доступен на данной машине; EADDRINUSE другое гнездо уже использует указанный адрес; EINVAL гнездо уже имеет адрес; EACCES нет доступа для установки адреса гнезда. Существуют и другие коды ошибок, зависящие от используемого пространства имен. Чтение адреса гнезда Для получения адреса гнезда служит функция getsockname. Прототип функции находится в заголовочном файле. int getsockname (int SOCKET, struct sockaddr *ADDR, socklen_t *LENGTH-PTR) Функция возвращает адрес гнезда SOCKET в участки памяти, указанные аргументами ADDR и LENGTH-PTR. Возвращаемое значение равно 0, если функция 41
Страницы
- « первая
- ‹ предыдущая
- …
- 39
- 40
- 41
- 42
- 43
- …
- следующая ›
- последняя »