| |
struct sockaddr { sa_family_t sa_family; char sa_data[]; };
На практике, в зависимости от используемого сетевого протокола, используются другие структуры. Сокеты для использования с протоколом IP определены следующим образом:
struct sockaddr_in { sa_family_t sin_family; in_port_t sin_port; struct in_addr sin_addr; unsigned char sin_zero[8]; };
Структура in_addr определена следующим образом:
struct in_addr { in_addr_t s_addr; };где in_addr_t это целый беззнаковый тип длиной 32 бита.
Сокеты создаются при помощи системного вызова socket:
int socket(int domain, int type, int protocol);
Аргументы функции socket имеют следующее значение:
Функция socket возвращает дескриптор файла сокета, используемый в дальнейшем для работы с сокетом. В случае возникновения ошибки функция возвращает значение -1.
Функция socket создает "безымянный" сокет, т.е. не связанный ни с локальным адресом, ни с номером порта. Связать сокет с адресом компьютера и номером порта можно при помощи функции bind:
int bind(int socket, const struct sockaddr *address, socklen_t address_len}
Аргументы функции bind:
Если вызов функции bind завершается успешно, то возвращаемое значение равно нулю. В случае возникновения ошибки возвращается значение -1. Код ошибки содержится в переменной errno.
Закладки на сайте Проследить за страницей |
Created 1996-2024 by Maxim Chirkov Добавить, Поддержать, Вебмастеру |