Provided by: manpages-zh_1.5.2-1_all bug

NAME 名稱
       bind - 將一個名字和一個套接字綁定到一起(賦一個名字給一個套接字)

SYNOPSIS 概述
       #include <sys/types.h>
       #include <sys/socket.h>

       int bind(int sockfd, struct sockaddr *my_addr, socklen_t addrlen);

DESCRIPTION 描述
       bind  為套接字  sockfd  指定本地地址 my_addr.  my_addr 的長度為 addrlen
       (字節).傳統的叫法是給一個套接字分配一個名字.      當使用     socket(2),
       函數創建一個套接字時,它存在於一個地址空間(地址族),
       但還沒有給它分配一個名字

       一般來說在使用     SOCK_STREAM     套接字建立連接之前總要使用      bind
       為其分配一個本地地址.參見 accept(2)).

NOTES 注意
       這條規則用於給每個地址族綁定不同的名稱.更多細節請參
       考手冊頁第7冊(man7).   對於  AF_INET  參見  ip(7),  對於  AF_UNIX  參見
       unix(7),  對於 AF_APPLETALK 參見 ddp(7), 對於 AF_PACKET 參見 packet(7),
       對於r AF_X25 參見 x25(7) 對於 AF_NETLINK 參見 netlink(7).

RETURN VALUE 返回值
       函數執行成功返回0,否則返回-1, 並設置錯誤代碼.

ERRORS 錯誤
       EBADF  sockfd 不是一個合法套接字描述符.

       EINVAL 套接字已經綁定到一個地址.這一條在以後會有所改變:        具體參見
              linux/unix/sock.c

       EACCES 地址受保護,使用者不是系統管理員.

       ENOTSOCK
              參數是檔案描述符,不是一個套接字.

       下列錯誤適用於UNIX域 (AF_UNIX) 套接字.

       EINVAL 地址長度 addrlen 錯誤,或者套接字不在 AF_UNIX 族.

       EROFS  套接字節點位於只讀檔案系統.

       EFAULT my_addr 指向使用者無權訪問的地址空間.

       ENAMETOOLONG
              my_addr 長度超范圍.

       ENOENT 檔案不存在.

       ENOMEM 核心存儲空間不足.

       ENOTDIR
              指定路徑不是一個目錄.

       EACCES 指定路徑拒絕訪問.

       ELOOP  在解析 my_addr 時發現過多符號連接.

BUGS 勘誤
       透明代理選項沒有描述.

CONFORMING TO 一致性
       SVr4,4.4BSD(函數  bind  首次出現於BSD 4.2)SVr4文件增加了 EADDRNOTAVAIL,
       EADDRINUSE,  和  ENOSR  一般性錯誤,  還增加了  EIO,  EISDIREROFS
       Unix域錯誤.

NOTE

       函數                bind                的第三個參數實際上是int類型(BSD
       4.*和libc4以及libc5都是這麼做的).
       不知為什麼有的POSIX系統目前仍在使用socklen_t.
       目前尚無統一標準,不過glibc2兩者都使用.參見 accept(2).

SEE ALSO 參見
       accept(2), connect(2),  listen(2),  socket(2),  getsockname(2),  ip(7),
       socket(7)