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

COMMENTS