table of contents
other languages
other sections
BIND(2) | Linux Programmer's Manual | BIND(2) |
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, EISDIR 和 EROFS 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)跋¶
本頁面中文版由中文 man 手冊頁計劃提供。中文 man 手冊頁計劃:../../man-pages-zh/manpages-zh
3 Oct 1998 | Linux 2.2 |