Составители:
bind(s, sockaddr, sockaddrlen);
где s - дескриптор узла, возвращаемый функцией socket;
sockaddr - структура, которая интерпретируется поддерживаемым протоколом (IP - ад-
рес, № порта и т.д.);
sockaddrlen - размер параметра sockaddr в байтах.
Рассмотрим структуру sockaddr более подробно:
struct sockaddr
{
u_short sa_family;
char sa_data[14];
};
Первый элемент структуры обозначает протокол, второй - специфическое для про-
токола значение. Например версия данной структуры для Internet (sockaddr_in) будет
иметь следующий вид:
struct sockaddr_in
{
short sin_family; //AF_INET
u_short sin_port;
struct sin_addr; //4-х байтовый IP-адрес
char sin_zero[8];
};
Элемент sin_addr представляет собой четырехбайтовый IP-адрес (например 127.0.0.1).
Для преобразования данной строки в требуемую форму используется функция
inet_addr(), которая будет рассмотрена далее.
Для установления связи со стороны клиента используется функция connect:
error = connect(s, serveraddr, serveraddrlen);
которая инициирует установление связи на узле, используя его дескриптор s и информа-
цию из структуры serveraddr, которая содержит адрес сервера и номер порта на который
надо установить связь. Если гнездо не было связано с адресом, connect автоматически
вызовет системную функцию bind.
Функция connect возвращает 0, если вызов прошел успешно. Возвращенная вели-
чина -1 указывает на то, что в процессе установления связи произошла некая ошибка. В
случае успешного вызова функции процесс может работать с дескриптором узла, ис-
пользуя функции read и write, и закрывать канал используя функцию close.
Со стороны сервера процесс установления связи сложнее. Когда сервер желает
предложить один из своих сервисов, он связывает узел с общеизвестным адресом, ассо-
циирующимся с данным сервисом, и пассивно слушает этот узел. Для этих целей ис-
пользуется системный вызов listen:
error = listen(s, qlength);
где s это дескриптор узла, а qlength это максимальное количество запросов на установ-
ление связи, которые могут стоять в очереди, ожидая обработки сервером; это количест-
во может быть ограничено особенностями системы.
194
bind(s, sockaddr, sockaddrlen); где s - дескриптор узла, возвращаемый функцией socket; sockaddr - структура, которая интерпретируется поддерживаемым протоколом (IP - ад- рес, № порта и т.д.); sockaddrlen - размер параметра sockaddr в байтах. Рассмотрим структуру sockaddr более подробно: struct sockaddr { u_short sa_family; char sa_data[14]; }; Первый элемент структуры обозначает протокол, второй - специфическое для про- токола значение. Например версия данной структуры для Internet (sockaddr_in) будет иметь следующий вид: struct sockaddr_in { short sin_family; //AF_INET u_short sin_port; struct sin_addr; //4-х байтовый IP-адрес char sin_zero[8]; }; Элемент sin_addr представляет собой четырехбайтовый IP-адрес (например 127.0.0.1). Для преобразования данной строки в требуемую форму используется функция inet_addr(), которая будет рассмотрена далее. Для установления связи со стороны клиента используется функция connect: error = connect(s, serveraddr, serveraddrlen); которая инициирует установление связи на узле, используя его дескриптор s и информа- цию из структуры serveraddr, которая содержит адрес сервера и номер порта на который надо установить связь. Если гнездо не было связано с адресом, connect автоматически вызовет системную функцию bind. Функция connect возвращает 0, если вызов прошел успешно. Возвращенная вели- чина -1 указывает на то, что в процессе установления связи произошла некая ошибка. В случае успешного вызова функции процесс может работать с дескриптором узла, ис- пользуя функции read и write, и закрывать канал используя функцию close. Со стороны сервера процесс установления связи сложнее. Когда сервер желает предложить один из своих сервисов, он связывает узел с общеизвестным адресом, ассо- циирующимся с данным сервисом, и пассивно слушает этот узел. Для этих целей ис- пользуется системный вызов listen: error = listen(s, qlength); где s это дескриптор узла, а qlength это максимальное количество запросов на установ- ление связи, которые могут стоять в очереди, ожидая обработки сервером; это количест- во может быть ограничено особенностями системы. 194
Страницы
- « первая
- ‹ предыдущая
- …
- 190
- 191
- 192
- 193
- 194
- …
- следующая ›
- последняя »