connect(2) | System Calls Manual | connect(2) |
connect - инициирует соединение на сокете
Standard C library (libc, -lc)
#include <sys/socket.h>
int connect(int sockfd, const struct sockaddr *addr, socklen_t addrlen);
Системный вызов connect() устанавливает соединение с сокетом, заданным файловый дескриптором sockfd, ссылающимся на адрес addr. Аргумент addrlen определяет размер addr. Формат адреса в addr определяется адресным пространством сокета sockfd; подробнее можно узнать в socket(2).
Если сокет sockfd имеет тип SOCK_DGRAM, то адрес addr является адресом по умолчанию, куда посылаются датаграммы, и единственным адресом, откуда они принимаются. Если сокет имеет тип SOCK_STREAM или SOCK_SEQPACKET, то данный системный вызов попытается установить соединение с другим сокетом, заданным параметром addr.
Some protocol sockets (e.g., UNIX domain stream sockets) may successfully connect() only once.
Some protocol sockets (e.g., datagram sockets in the UNIX and Internet domains) may use connect() multiple times to change their association.
Some protocol sockets (e.g., TCP sockets as well as datagram sockets in the UNIX and Internet domains) may dissolve the association by connecting to an address with the sa_family member of sockaddr set to AF_UNSPEC; thereafter, the socket can be connected to another address. (AF_UNSPEC is supported since Linux 2.2.)
If the connection or binding succeeds, zero is returned. On error, -1 is returned, and errno is set to indicate the error.
Ниже приведены только общие ошибки сокетов. Могут также появляться коды ошибок, существующие в конкретном домене.
POSIX.1-2001, POSIX.1-2008, SVr4, 4.4BSD, (connect() впервые появился 4.2BSD).
Описание типа socklen_t смотрите в accept(2).
Если вызов connect() завершается с ошибкой, то состояние сокета считается неопределённым. Переносимые приложения должны закрывать сокет и для переподключения создавать новый.
Пример использования connect() показан в getaddrinfo(3).
accept(2), bind(2), getsockname(2), listen(2), socket(2), path_resolution(7), selinux(8)
Русский перевод этой страницы руководства был сделан Azamat Hackimov <azamat.hackimov@gmail.com>, Dmitriy S. Seregin <dseregin@59.ru>, Dmitry Bolkhovskikh <d20052005@yandex.ru>, Katrin Kutepova <blackkatelv@gmail.com>, Yuri Kozlov <yuray@komyakino.ru> и Иван Павлов <pavia00@gmail.com>
Этот перевод является бесплатной документацией; прочитайте Стандартную общественную лицензию GNU версии 3 или более позднюю, чтобы узнать об условиях авторского права. Мы не несем НИКАКОЙ ОТВЕТСТВЕННОСТИ.
Если вы обнаружите ошибки в переводе этой страницы руководства, пожалуйста, отправьте электронное письмо на man-pages-ru-talks@lists.sourceforge.net.
4 декабря 2022 г. | Linux man-pages 6.03 |