CONNECT(2) | Podręcznik programisty Linuksa | CONNECT(2) |
connect - inicjalizacja połączenia poprzez gniazdo
#include <sys/types.h>
#include <sys/socket.h>
int connect(int sockfd, const struct sockaddr *serv_addr, socklen_t addrlen);
Uwaga! To tłumaczenie może być nieaktualne!
Deskryptor sockfd musi odnosić się do gniazda. Jeśli gniazdo jest typu SOCK_DGRAM, to adres serv_addr jest adresem, do którego domyślnie przesyłane są datagramy i jedynym adresem, z którego datagramy są odbierane. Jeśli gniazdo jest typu SOCK_STREAM lub SOCK_SEQPACKET, to ta funkcja próbuje nawiązać połączenie z innym gniazdem. Inne gniazdo jest podane jako serv_addr, co jest adresem (o długości addrlen) w przestrzeni komunikacyjnej gniazda. Każda z przestrzeni komunikacyjnych interpretuje serv_addr, po swojemu.
Ogólnie, gniazda strumieniowe (dla protokołów połączeniowych) mogą pomyślnie wykonać connect tylko raz; gniazda datagramowe (dla protokołów bezpołączeniowych) mogą używać connect wielokrotnie do zmiany swojego przypisania. Gniazda datagramowe mogą zniszczyć powiązanie przez łączenie się z adresem, w którym pole sa_family struktury sockaddr ma wartość AF_UNSPEC.
Jeśli połączenie lub przywiązanie uda się, zwracane jest zero. Przy błędzie, zwracane jest -1 i odpowiednio ustawiane errno.
Następujące błędy to jedynie ogólne błędy gniazd. Mogą występować również inne, specyficzne dla domeny kody błędów.
SVr4, 4.4BSD (funkcja connect pojawiła się pierwotnie w BSD 4.2). SVr4 dokumentuje dodatkowe błędy ogólne EADDRNOTAVAIL, EINVAL, EAFNOSUPPORT, EALREADY, EINTR, EPROTOTYPE i ENOSR. Dokumentuje także wiele dodatkowych błędów tutaj nieopisanych.
Trzeci argument connect jest w rzeczywistości typu int (i tak jest w BSD 4.*, libc4 i libc5). Pewne zamieszanie w POSIX doprowadziło jego zmiany na obecny socklen_t. Szkic standardu nie został jeszcze przyjęty, ale glibc2 już jest z nim zgodne i zawiera również socklen_t. Zobacz także accept(2).
Rozłączanie gniazda poprzez wywołanie connect z adresem AF_UNSPEC nie jest jeszcze wspierane.
Powyższe tłumaczenie pochodzi z nieistniejącego już Projektu Tłumaczenia Manuali i może nie być aktualne. W razie zauważenia różnic między powyższym opisem a rzeczywistym zachowaniem opisywanego programu lub funkcji, prosimy o zapoznanie się z oryginalną (angielską) wersją strony podręcznika za pomocą polecenia:
Prosimy o pomoc w aktualizacji stron man - więcej informacji można znaleźć pod adresem http://sourceforge.net/projects/manpages-pl/.
1998-10-03 | Linux 2.2 |