.\" -*- coding: UTF-8 -*-
.\" Copyright 1993 Rickard E. Faith (faith@cs.unc.edu)
.\" and Copyright 2005-2007, Michael Kerrisk <mtk.manpages@gmail.com>
.\" Portions extracted from /usr/include/sys/socket.h, which does not have
.\" any authorship information in it.  It is probably available under the GPL.
.\"
.\" SPDX-License-Identifier: Linux-man-pages-copyleft
.\"
.\"
.\" Other portions are from the 6.9 (Berkeley) 3/10/91 man page:
.\"
.\" Copyright (c) 1983 The Regents of the University of California.
.\" All rights reserved.
.\"
.\" SPDX-License-Identifier: BSD-4-Clause-UC
.\"
.\" Modified Mon Oct 21 23:05:29 EDT 1996 by Eric S. Raymond <esr@thyrsus.com>
.\" Modified 1998 by Andi Kleen
.\" $Id: bind.2,v 1.3 1999/04/23 19:56:07 freitag Exp $
.\" Modified 2004-06-23 by Michael Kerrisk <mtk.manpages@gmail.com>
.\"
.\"*******************************************************************
.\"
.\" This file was generated with po4a. Translate the source file.
.\"
.\"*******************************************************************
.TH bind 2 "5 lutego 2023 r." "Linux man\-pages 6.03" 
.SH NAZWA
bind \- przywiązuje nazwę do gniazda
.SH BIBLIOTEKA
Standardowa biblioteka C (\fIlibc\fP, \fI\-lc\fP)
.SH SKŁADNIA
.nf
\fB#include <sys/socket.h>\fP
.PP
\fBint bind(int \fP\fIsockfd\fP\fB, const struct sockaddr *\fP\fIaddr\fP\fB,\fP
\fB         socklen_t \fP\fIaddrlen\fP\fB);\fP
.fi
.SH OPIS
Gdy tworzone jest gniazdo za pomocą \fBsocket\fP(2), istnieje ono w przestrzeni
nazw (rodzinie adresów), lecz nie ma przypisanego adresu. \fBbind\fP()
przypisuje adres określony w \fIaddr\fP do gniazda odnoszącego się do
deskryptora pliku \fIsockfd\fP. \fIaddrlen\fP określa rozmiar, w bajtach,
struktury adresowej na którą wskazuje \fIaddr\fP. Tradycyjnie operacja ta była
nazywana "przypisaniem nazwy do gniazda".
.PP
Normalnie, zanim gniazdo \fBSOCK_STREAM\fP będzie mogło odbierać połączenia
(zobacz \fBaccept\fP(2)), niezbędne jest przypisanie mu lokalnego adresu za
pomocą \fBbind\fP().
.PP
Reguły dotyczące przywiązywania nazw są różne w różnych rodzinach
adresów. Szczegółowe informacje znajdują się na stronach podręcznika
systemowego w sekcji 7. Dla \fBAF_INET\fP zobacz \fBip\fP(7), dla \fBAF_INET6\fP
zobacz \fBipc6\fP(7), dla \fBAF_UNIX\fP zobacz \fBunix\fP(7), dla \fBAF_APPLETALK\fP
zobacz \fBddp\fP(7), dla \fBAF_PACKET\fP zobacz \fBpacket\fP(7), dla \fBAF_X25\fP zobacz
\fBx25\fP(7), a dla \fBAF_NETLINK\fP zobacz \fBnetlink\fP(7).
.PP
Faktyczna struktura przekazywana jako argument \fIaddr\fP będzie zależała od
rodziny adresowej. Struktura \fIsockaddr\fP jest zdefiniowana podobnie do:
.PP
.in +4n
.EX
struct sockaddr {
    sa_family_t sa_family;
    char        sa_data[14];
}
.EE
.in
.PP
Jedyną funkcją tej struktury jest rzutowanie wskaźnika struktury
przekazanego w \fIaddr\fP, aby uniknąć ostrzeżeń kompilatora. Zob. PRZYKŁADY
poniżej.
.SH "WARTOŚĆ ZWRACANA"
Po pomyślnym zakończeniu zwracane jest zero. Po błędzie zwracane jest \-1 i
ustawiane jest \fIerrno\fP wskazując błąd.
.SH BŁĘDY
.TP 
\fBEACCES\fP
.\" e.g., privileged port in AF_INET domain
Adres jest chroniony, a użytkownik nie jest superużytkownikiem.
.TP 
\fBEADDRINUSE\fP
Podany adres już jest wykorzystywany.
.TP 
\fBEADDRINUSE\fP
(gniazda domeny Internet)  Podano zero jako numer portu w strukturze adresu
gniazda, lecz 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
\fI/proc/sys/net/ipv4/ip_local_port_range\fP w podręczniku \fBip\fP(7).
.TP 
\fBEBADF\fP
\fIsockfd\fP nie jest prawidłowym deskryptorem pliku.
.TP 
\fBEINVAL\fP
.\" This may change in the future: see
.\" .I linux/unix/sock.c for details.
Gniazdo jest już skojarzone z adresem.
.TP 
\fBEINVAL\fP
\fIaddrlen\fP jest nieprawidłowe lub \fIaddr\fP nie jest prawidłowym adresem dla
tej domeny gniazda.
.TP 
\fBENOTSOCK\fP
Deskryptor pliku \fIsockfd\fP nie odnosi się do gniazda.
.PP
Następujące błędy odnoszą się do gniazd domeny UNIX\-owej (\fBAF_UNIX\fP):
.TP 
\fBEACCES\fP
Brak praw do przeszukiwania dla składowej ścieżki (zob. także
\fBpath_resolution\fP(7)).
.TP 
\fBEADDRNOTAVAIL\fP
Zażądano nieistniejącego interfejsu lub żądany adres nie jest adresem
lokalnym.
.TP 
\fBEFAULT\fP
\fIaddr\fP wskazuje poza dostępną dla użytkownika przestrzeń adresową.
.TP 
\fBELOOP\fP
Podczas rozwiązywania \fIaddr\fP napotkano zbyt wiele dowiązań symbolicznych.
.TP 
\fBENAMETOOLONG\fP
\fIaddr\fP jest zbyt długie.
.TP 
\fBENOENT\fP
Fragment ścieżki gniazda odnoszący się do któregoś z katalogów nie istnieje.
.TP 
\fBENOMEM\fP
Brak pamięci jądra.
.TP 
\fBENOTDIR\fP
Składnik ścieżki nie jest katalogiem.
.TP 
\fBEROFS\fP
I\-węzeł gniazda rezyduje na systemie plików przeznaczonym tylko do odczytu.
.SH STANDARDY
.\" SVr4 documents an additional
.\" .B ENOSR
.\" general error condition, and
.\" additional
.\" .B EIO
.\" and
.\" .B EISDIR
.\" UNIX-domain error conditions.
POSIX.1\-2001, POSIX.1\-2008, SVr4, 4.4BSD (\fBbind\fP() pojawiło się pierwotnie
w 4.2BSD).
.SH UWAGI
Więcej informacji o typie \fIsocklen_t\fP opisano w podręczniku \fBaccept\fP(2).
.SH USTERKI
.\" FIXME Document transparent proxy options
Nie opisano opcji przezroczystych proxy.
.SH PRZYKŁADY
Przykładowy program używający \fBbind\fP() z gniazdami domeny Internet można
znaleźć w \fBgetaddrinfo\fP(3).
.PP
.\" listen.7 refers to this example.
.\" accept.7 refers to this example.
.\" unix.7 refers to this example.
Następujący przykład pokazuje sposób na skojarzenie gniazda strumieniowego w
domenie uniksowej (\fBAF_UNIX\fP) i akceptować połączenia:
.PP
.\" SRC BEGIN (bind.c)
.EX
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <sys/socket.h>
#include <sys/un.h>
#include <unistd.h>

#define MY_SOCK_PATH "/somepath"
#define LISTEN_BACKLOG 50

#define handle_error(msg) \e
    do { perror(msg); exit(EXIT_FAILURE); } while (0)

int
main(void)
{
    int                 sfd, cfd;
    socklen_t           peer_addr_size;
    struct sockaddr_un  my_addr, peer_addr;

    sfd = socket(AF_UNIX, SOCK_STREAM, 0);
    if (sfd == \-1)
        handle_error("socket");

    memset(&my_addr, 0, sizeof(my_addr));
    my_addr.sun_family = AF_UNIX;
    strncpy(my_addr.sun_path, MY_SOCK_PATH,
            sizeof(my_addr.sun_path) \- 1);

    if (bind(sfd, (struct sockaddr *) &my_addr,
             sizeof(my_addr)) == \-1)
        handle_error("bind");

    if (listen(sfd, LISTEN_BACKLOG) == \-1)
        handle_error("listen");

    /* Teraz możemy akceptować nadchodzące połączenia,
       po jednym naraz, za pomocą accept(2). */

    peer_addr_size = sizeof(peer_addr);
    cfd = accept(sfd, (struct sockaddr *) &peer_addr,
                 &peer_addr_size);
    if (cfd == \-1)
        handle_error("accept");

    /* Kod do obsługi nadchodzących połączeń... */

    if (close(sfd) == \-1)
        handle_error("close");

    if (unlink(MY_SOCK_PATH) == \-1)
        handle_error("unlink");
}
.EE
.\" SRC END
.SH "ZOBACZ TAKŻE"
\fBaccept\fP(2), \fBconnect\fP(2), \fBgetsockname\fP(2), \fBlisten\fP(2), \fBsocket\fP(2),
\fBgetaddrinfo\fP(3), \fBgetifaddrs\fP(3), \fBip\fP(7), \fBipv6\fP(7),
\fBpath_resolution\fP(7), \fBsocket\fP(7), \fBunix\fP(7)
.PP
.SH 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>
.
.PP
Niniejsze tłumaczenie jest wolną dokumentacją. Bliższe informacje o warunkach
licencji można uzyskać zapoznając się z
.UR https://www.gnu.org/licenses/gpl-3.0.html
GNU General Public License w wersji 3
.UE
lub nowszej. Nie przyjmuje się ŻADNEJ ODPOWIEDZIALNOŚCI.
.PP
Błędy w tłumaczeniu strony podręcznika prosimy zgłaszać na adres listy
dyskusyjnej
.MT manpages-pl-list@lists.sourceforge.net
.ME .
