Linux 2.2
1998-10-03
manpages-pl-dev
Polish man pages for developers
man-pages-pl
Polish man pages from the Linux Documentation Project
manpages-dev
Manual pages about using GNU/Linux for development
man-pages
Linux kernel and C library user-space interface documentation
NAZWA
connect - inicjalizacja połączenia poprzez gniazdo
SKŁADNIA
#include <sys/types.h>
#include <sys/socket.h>
#include <sys/socket.h>
int connect(int sockfd, const struct sockaddr *serv_addr, socklen_t addrlen);
OPIS
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.
WARTOŚĆ ZWRACANA
Jeśli połączenie lub przywiązanie uda się, zwracane jest zero. Przy błędzie, zwracane jest -1 i odpowiednio ustawiane errno.
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.
EBADF | Deskryptor nie jest prawidłowym indeksem tablicy deskryptorów. |
EFAULT | Adres struktura gniazda znajduje się poza przestrzenią adresową użytkownika. |
ENOTSOCK | |
Deskryptor nie jest związany z gniazdem. | |
EISCONN | |
Gniazdo już jest połączone. | |
ECONNREFUSED | |
Żaden serwer nie nasłuchuje na zdalnym adresie. | |
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". | |
ENETUNREACH | |
Sieć jest nieosiągalna. | |
EADDRINUSE | |
Adres lokalny już jest wykorzystywany. | |
EINPROGRESS | |
Gniazdo jest nieblokujące, a połączenie nie może zostać zrealizowane natychmiast. Jest możliwe wykonanie select(2) lub poll(2) w celu dokończenia poprzez wybranie gniazda do zapisu. Po tym, jak select 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). | |
EALREADY | |
Gniazdo jest nieblokujące, a poprzednia próba połączenia nie została zakończona. EAGAIN Brak wolnych portów lokalnych, lub brak wpisów w buforze marszrutowym. Dla PF_INET w opisie sysctl net.ipv4.ip_local_port_range w ip(7) opisano, jak zwiększyć liczbę portów lokalnych. | |
EAFNOSUPPORT | |
Przekazany adres miał prawidłowej rodziny adresów w swoim polu sa_family. | |
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 firewalla. |
ZGODNE Z
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.
UWAGA
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).
USTERKI
Rozłączanie gniazda poprzez wywołanie connect z adresem AF_UNSPEC nie jest jeszcze wspierane.
ZOBACZ TAKŻE
INFORMACJE O TŁUMACZENIU
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/.
man --locale=C 2 connect |
REFERENCED BY
ldap_get_option(3), ldap_set_option(3), sctp(7), accept(2), bind(2), getpeername(2), listen(2), recv(2), select(2), select_tut(2), shutdown(2), socket(2), socketcall(2), write(2), getaddrinfo(3), rtime(3), ddp(7), ip(7), netlink(7), packet(7), signal(7), sock_diag(7), socket(7), tcp(7), udp(7), unix(7), slapd-ldap(5), slapd-meta(5), pmsocks(1), telnet-probe(1), socket(1), msocket(2viewos), wdm(1x), xdm(1), vsock(7), acpid(8), ares_set_socket_functions(3), xdm(8), rds(7), xdm(1), wdm(1), io_uring_enter(2)