Manpages

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)

本 頁 面 中 文 版 由 中 文 man 手 冊 頁 計 劃 提 供 。 中 文 man 手 冊 頁 計 劃 : https://github.com/man-pages-zh/manpages-zh