plucky (2) connect.2.gz

Provided by: manpages-pl-dev_4.25.1-1_all bug

NAZWA

       connect - inicjuje połączenie poprzez gniazdo

BIBLIOTEKA

       Standardowa biblioteka C (libc, -lc)

SKŁADNIA

       #include <sys/socket.h>

       int connect(int sockfd, const struct sockaddr *addr,
                   socklen_t addrlen);

OPIS

       Wywołanie  systemowe  connect()  łączy gniazdo określone deskryptorem pliku sockfd z adresem podanym jako
       addr. Argument addrlen określa rozmiar addr. Format adresu addr zależy od przestrzeni  adresowej  gniazda
       sockfd; więcej szczegółów w podręczniku socket(2).

       Jeśli gniazdo sockfd jest typu SOCK_DGRAM, to adres 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  to  wywołanie próbuje nawiązać połączenie z gniazdem skojarzonym z adresem podanym w
       addr.

       Gniazda niektórych protokołów (np. gniazda strumieniowe dziedziny Uniksa) mogą pomyślnie połączyć się  za
       pomocą connect() tylko raz.

       Gniazda  niektórych  protokołów  (np.  gniazda  datagramowe  w  dziedzinach Uniksa i Internetu) mogą użyć
       connect() wielokrotnie, aby zmienić swoje przypisanie.

       Gniazda niektórych protokołów (np. gniazda TCP oraz gniazda datagramowe w dziedzinach Uniksa i Internetu)
       mogą  zniszczyć  powiązanie  przez  łączenie się z adresem, w którym pole sa_family struktury sockaddr ma
       wartość AF_UNSPEC; następnie gniazdo można połączyć  z  innym  adresem  (AF_UNSPEC  jest  obsługiwane  od
       Linuksa 2.2).

WARTOŚĆ ZWRACANA

       Jeśli połączenie lub przywiązanie uda się, zwracane jest zero. Przy błędzie, zwracane jest -1 i ustawiane
       jest errno wskazując błąd.

BŁĘDY

       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.

       EACCES W  przypadku  gniazd domeny Uniksa identyfikowanych ścieżką: Odmówiono uprawnienia do zapisu pliku
              gniazda lub odmówiono  uprawnienia  wyszukania  dla  jednego  z  katalogów  w  ścieżce  (zob.  też
              path_resolution(7)).

       EACCES
       EPERM  Użytkownik  próbował podłączyć się do adresu rozgłoszeniowego (broadcast) bez włączonego znacznika
              „broadcast” dla gniazda lub  też  połączenie  nie  udało  się  z  powodu  lokalnej  reguły  zapory
              sieciowej.

       EACCES Błąd  może  być  zwrócony  również gdy reguły SELinux odmówiły połączenia (np. gdy istnieje reguła
              określająca, że pośrednik HTTP może połączyć się tylko  z  portem  przypisanym  serwerom  HTTP,  a
              pośrednik próbuje połączyć się z innym portem).

       EADDRINUSE
              Adres lokalny już jest wykorzystywany.

       EADDRNOTAVAIL
              (gniazda  domeny  Internet)   Gniazdo określone w sockfd nie było wcześniej skojarzone z adresem i
              przy próbie skojarzenia z portem dynamicznym (efemerycznym),  okazało  się,  że  wszystkie  numery
              portów  w  zakresie  portów  dynamicznych  są  aktualnie używane. Więcej informacji w opisie pliku
              /proc/sys/net/ipv4/ip_local_port_range w podręczniku ip(7).

       EAFNOSUPPORT
              Przekazany adres nie miał prawidłowej rodziny adresów w swoim polu sa_family.

       EAGAIN W przypadku nieblokujących gniazd domeny Uniksa: gniazdo jest nieblokujące, a połączenie nie  może
              być  natychmiast  zestawione. W przypadku gniazd z innych rodzin: istnieje niewystarczająca liczba
              wpisów w buforze trasowania.

       EALREADY
              Gniazdo jest nieblokujące, a poprzednia próba połączenia nie została zakończona.

       EBADF  sockfd nie jest prawidłowym indeksem tablicy deskryptorów.

       ECONNREFUSED
              connect() w przypadku  gniazda  strumieniowego  nie  znalazło  nikogo  nasłuchującego  na  zdalnym
              adresie.

       EFAULT Adres struktury gniazda znajduje się poza przestrzenią adresową użytkownika.

       EINPROGRESS
              Gniazdo  jest  nieblokujące, a połączenie nie może zostać zrealizowane natychmiast (gniazda domeny
              Uniksa zwracają wówczas inny błąd: EAGAIN). Jest możliwe wykonanie select(2) lub  poll(2)  w  celu
              dokończenia poprzez wybranie gniazda do zapisu. Po tym, jak select(2) wskaże zapisywalność, należy
              użyć getsockopt(2), aby odczytać opcję SO_ERROR  z  poziomu  SOL_SOCKET  w  celu  określenia,  czy
              connect()  zakończyło  się  pomyślnie  (SO_ERROR  będzie  zerem) lub niepomyślnie (SO_ERROR będzie
              jednym ze typowych, wymienionych powyżej kodów błędów, wyjaśniających przyczynę błędu).

       EINTR  Wywołanie systemowe zostało przerwane przechwyconym sygnałem; zob. signal(7).

       EISCONN
              Gniazdo już jest połączone.

       ENETUNREACH
              Sieć jest nieosiągalna.

       ENOTSOCK
              Deskryptor pliku sockfd nie odnosi się do gniazda.

       EPROTOTYPE
              Typ gniazda nie obsługuje żądanego protokołu komunikacji. Błąd ten może wystąpić np.  przy  próbie
              połączenia gniazda datagramowego domeny Uniksa z gniazdem strumieniowym.

       ETIMEDOUT
              Przeterminowanie  próby  połączenia.  Serwer może być zbyt zajęty, aby przyjmować nowe połączenia.
              Dla gniazd  IP  czas  przeterminowania  może  być  bardzo  długi,  gdy  na  serwerze  włączone  są
              „syncookies”.

STANDARDY

       POSIX.1-2008.

HISTORIA

       POSIX.1-2001, SVr4, 4.4BSD (connect() pojawiło się pierwotnie w 4.2BSD).

UWAGI

       Jeśli connect() zawiedzie, należy uznać stan gniazda za nieokreślony. Przenośne aplikacje powinny zamknąć
       gniazdo i utworzyć nowe w celu ponownego połączenia.

PRZYKŁADY

       Przykładowe użycie connect() pokazano w getaddrinfo(3).

ZOBACZ TAKŻE

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

TŁUMACZENIE

       Autorami polskiego tłumaczenia niniejszej strony podręcznika  są:  Przemek  Borys  <pborys@dione.ids.pl>,
       Andrzej Krzysztofowicz <ankry@green.mf.pg.gda.pl> i Michał Kułach <michal.kulach@gmail.com>

       Niniejsze  tłumaczenie  jest  wolną  dokumentacją.  Bliższe informacje o warunkach licencji można uzyskać
       zapoznając się z GNU General Public License w wersji  3  ⟨https://www.gnu.org/licenses/gpl-3.0.html⟩  lub
       nowszej. Nie przyjmuje się ŻADNEJ ODPOWIEDZIALNOŚCI.

       Błędy  w  tłumaczeniu  strony  podręcznika  prosimy  zgłaszać  na  adres  listy dyskusyjnej ⟨manpages-pl-
       list@lists.sourceforge.net⟩.