Управление ресурсами в ОС UNIX




Методические указания к лабораторной работе - часть 3


#include<sys/types.h>

#include<sys/socket.h>

int accept (int sockfd, struct sockaddr *address, size_t *add_len);

  • sockfd - дескриптор сокета, для которого ведется прием соединений;
  • address - указатель на обобщенную структуру адреса сокета с информацией о клиенте; так как связь использует соединение адрес клиента знать не обязательно и допустимо задавать параметр address значением NULL;
  • add_len - размер структуры адреса, заданной параметром address, если значение address не равно NULL.
  • Возвращаемое значение соответствует идентификатору нового сокета, который будет использоваться для связи. До тех пор, пока от клиента не поступил запрос на соединение, процесс, выдавший системный вызов accept() переводится в состояние ожидания.

    Данная операция выполняется только в программе сервера.

    5. Подключение клиента

    Для выполнения запроса на подключение к серверному процессу клиент использует системный вызов connect().

    #include<sys/types.h>

    #include<sys/socket.h>

    int connect (int csockfd, const struct sockaddr *address, size_t add_len);

  • сsockfd - дескриптор файла сокета клиента, созданным с помощью вызова socket();
  • address - указателем на обобщенную структуру адреса сокета, к которой преобразуется структура sockaddr_in, в случае передачи данных через сеть;
  • size_t add_len - размер указанной структуры адреса сокета.
  • В случае успешного завершения вызова connect() он возвращает значение 0. В случае ошибки, системный вызов connect() возвращает значение -1, а переменная errno идентифицирует ошибку.

    Данная операция выполняется только в программе клиента.

    6. Пересылка данных

    Для сокетов типа SOCK_STREAM дескрипторы сокетов, полученные сервером посредством вызова accept() и клиентом с помощью вызова socked(), могут использоваться для чтения или записи. Для этого могут использоваться обычные вызовы read() и write(), либо специальные системные вызовы send() и recv(), позволяющие задавать дополнительные параметры пересылки данных по сети. Синхронизация данных при работе с сокетом аналогична передаче данных через программный канал.




    Содержание  Назад  Вперед