Scroll to navigation

CONNECT(2) Linux - příručka programátora CONNECT(2)

JMÉNO

connect - inicializuj spojení soketu

POUŽITÍ

#include <sys/types.h>          /* Viz POZNÁMKY */

#include <sys/socket.h>
int connect(int sockfd, const struct sockaddr *addr,
            socklen_t addrlen);

POPIS

Systémové volání connect() připojí soket specifikovaný v sockfd k adrese specifikované v addr. Parametr addrlen udává velikost addr. Formát adresy v addr je dán adresovým prostorem deskriptoru v sockfd. Viz socket(2) pro více detailů.

Parametr sockfd je soket. Je-li jeho typ SOCK_DGRAM, pak je addr jediným místem, odkud a kam budou přijímány, resp. posílány datagramy. Je-li typ soketu SOCK_STREAM, nebo SOCK_SEQPACKET potom se toto volání pokusí navázat spojení se soketem, který je specifikován v addr, což je adresa v jmenném prostoru soketu. Každý jmenný prostor interpretuje adresu v addr.

Obecně se mohou protokolové sokety úspěšně spojit pouze jednou; datagramové sokety mohou použít volání connect vícekrát. Datagramové sokety mohou zrušit asociovaný soket tak, že se pokusí spojit s adresou z sa_family z sockaddr nastavenou na AF_UNSPEC (podporováno od linuxového jádra 2.2).

NÁVRATOVÉ HODNOTY

Je-li spojení navázáno, je vrácena 0, jinak -1 a externí proměnná errno je příslušně nastavena.

CHYBOVÉ STAVY

Tento seznam je pouze všeobecný. Mohou existovat další specifické chyby pro použitý jmenný prostor.

Pro sokety UNIXové domény, které jsou identifikovány jménem: je odmítnuto zapisování do souboru specifikovaného soketem, nebo je odmítnuto právo vyhledávat v adresářích specifikovaných cestou. (Viz path_resolution(7).)
Uživatel se pokusil připojit k broadcastové adrese, aniž by měl povolen broadcastový příznak na soketu, nebo požadavek na spojení byl odmítnut kvůli lokálnímu pravidlu firewallu.
Adresa je již používána.
(Internet domain sockets) The socket referred to by sockfd had not previously been bound to an address and, upon attempting to bind it to an ephemeral port, it was determined that all port numbers in the ephemeral port range are currently in use. See the discussion of /proc/sys/net/ipv4/ip_local_port_range in ip(7).
Poskytnutá adresa nemá správně specifikovanou rodinu adres v poli sa_family.
Insufficient entries in the routing cache.
Soket je neblokující a předchozí pokus o spojení ještě nebyl dokončen.
sockfd is not a valid open file descriptor.
A connect() on a stream socket found no one listening on the remote address.
Adresa soketu je mimo adresový prostor procesu.
The socket is nonblocking and the connection cannot be completed immediately. It is possible to select(2) or poll(2) for completion by selecting the socket for writing. After select(2) indicates writability, use getsockopt(2) to read the SO_ERROR option at level SOL_SOCKET to determine whether connect() completed successfully (SO_ERROR is zero) or unsuccessfully (SO_ERROR is one of the usual error codes listed here, explaining the reason for the failure).
Systémové volání bylo přerušeno doručením signálu. Viz signal(7).
Soket je již spojen.
Síť není dosažitelná.
The file descriptor sockfd does not refer to a socket.
The socket type does not support the requested communications protocol. This error can occur, for example, on an attempt to connect a UNIX domain datagram socket to a stream socket.
Timeout při pokusu o navázání spojení. Server může být příliš zaneprázdněn a není schopen přijmou další spojení. Vězte, že pro IP sokety může být timeout velmi dlouhý, pokud jsou syncookies povoleny na straně serveru.

SPLŇUJE STANDARDY

POSIX.1-2001, POSIX.1-2008, SVr4, 4.4BSD, (connect() se poprvé objevila ve 4.2BSD).

POZNÁMKY

POSIX.1 nevyžaduje vložení <sys/types.h> a proto není tento hlavičkový soubor v Linuxu vyžadován. Nicméně některé starší (BSD) implementace jej vyžadují a v přenositelných aplikacích by také bylo tento hlavičkový soubor zachovat.

For background on the socklen_t type, see accept(2).

If connect() fails, consider the state of the socket as unspecified. Portable applications should close the socket and create a new one for reconnecting.

PŘÍKLAD

Příklad použití connect() je v getaddrinfo(3).

DALŠÍ INFORMACE

accept(2), bind(2), getsockname(2), listen(2), socket(2), path_resolution(7)

TIRÁŽ

Tato stránka je součástí projektu Linux man-pages v4.16. Popis projektu a informace o hlášení chyb najdete na https://www.kernel.org/doc/man-pages/.

PŘEKLAD

Překlad této příručky do španělštiny vytvořili Pavel Heimlich <tropikhajma@gmail.com>

Tento překlad je bezplatná dokumentace; Přečtěte si GNU General Public License Version 3 nebo novější ohledně podmínek autorských práv. Neexistuje ŽÁDNÁ ODPOVĚDNOST.

Pokud narazíte na nějaké chyby v překladu této příručky, pošlete e-mail na adresu translation-team-cs@lists.sourceforge.net.

15. září 2017 Linux