logo
Конспект Граур

Запрос на соединение

#include <sys/types.h>

#include <sys/socket.h>

int connect (int sockfd, struct sockaddr *serv_addr, int addrlen);

sockfd – дескриптор сокета

serv_addr – указатель на структуру, содержащую адрес сокета, с которым производится соединение, в формате, который мы обсуждали выше

addrlen – реальная длина структуры

В случае успешного связывания функция возвращает 0, в случае ошибки – -1. Код ошибки заносится в errno.

Заметим, что в рамках модели «клиент-сервер» клиенту, вообще говоря, не важно, какой адрес будет назначен сокету, т.к. никакой процесс не будет пытаться непосредственно установить соединение с сокетом клиента. Поэтому клиент может не вызывать предварительно функцию bind, в этом случае при вызове connect система автоматически выберет приемлемые значения для локального адреса клиента. Однако сказанное справедливо только для взаимодействия в рамках домена AF_INET, в домене AF_UNIX клиентское приложение само должно позаботиться о связывании сокета.

Следующие два вызова используются сервером только в том случае, если используются сокеты с предварительным установлением соединения.