BIND 2
目录
- NAME 名称 bind
- SYNOPSIS 概述
.B #include
.br .B #include .sp .BI - DESCRIPTION 描述 .B bind 为套接字 .I sockfd 指定本地地址 .IR my_addr . .I my_addr 的长度为 .I addrlen (字节).传统的叫法是给一个套接字分配一个名字. 当使用 .BR socket (2), 函数创建一个套接字时,它存在于一个地址空间(地址族), 但还没有给它分配一个名字 .PP 一般来说在使用 .B SOCK_STREAM 套接字建立连接之前总要使用 .B bind 为其分配一个本地地址.参见 .BR accept (2)). .SH NOTES 注意 这条规则用于给每个地址族绑定不同的名称.更多细节请参 考手册页第7册(man7). 对于 .B AF_INET 参见 .BR ip (7), 对于 .B AF_UNIX 参见 .BR unix (7), 对于 .B AF_APPLETALK 参见 .BR ddp (7), 对于 .B AF_PACKET 参见 .BR packet (7), 对于r .B AF_X25 参见 .BR x25 (7) 对于 .B AF_NETLINK 参见 .BR netlink (7). .SH
- ERRORS 错误 .TP .B EBADF .I sockfd 不是一个合法套接字描述符. .TP .B EINVAL 套接字已经绑定到一个地址.这一条在以后会有所改变: 具体参见 .I linux/unix/sock.c .TP .B EACCES 地址受保护,用户不是系统管理员. .TP .B ENOTSOCK 参数是文件描述符,不是一个套接字. .PP 下列错误适用于UNIX域 .RB ( AF_UNIX ) 套接字. .TP .B EINVAL 地址长度 .I addrlen 错误,或者套接字不在 .B AF_UNIX 族. .TP .B EROFS 套接字节点位于只读文件系统. .TP .B EFAULT .I my_addr 指向用户无权访问的地址空间. .TP .B ENAMETOOLONG .I my_addr 长度超范围. .TP .B ENOENT 文件不存在. .TP .B ENOMEM 内核存储空间不足. .TP .B ENOTDIR 指定路径不是一个目录. .TP .B EACCES 指定路径拒绝访问. .TP .B ELOOP 在解析 .IR my_addr 时发现过多符号连接. .SH BUGS 勘误 透明代理选项没有描述. .SH CONFORMING TO 一致性 SVr4,4.4BSD(函数 .B bind 首次出现于BSD 4.2)SVr4文档增加了 .BR EADDRNOTAVAIL , .BR EADDRINUSE , 和 .B ENOSR 一般性错误, 还增加了 .BR EIO , .B EISDIR 和 .B EROFS Unix域错误. .SH NOTE 函数 .B bind 的第三个参数实际上是int类型(BSD 4.*和libc4以及libc5都是这么做的). 不知为什么有的POSIX系统目前仍在使用socklen_t. 目前尚无统一标准,不过glibc2两者都使用.参见 .BR accept (2). .SH
- 跋
BIND
NAME åç§°SYNOPSIS æ¦è¿°
DESCRIPTION æè¿°
NOTES 注æ
RETURN VALUE è¿åå¼
ERRORS é误
BUGS å误
CONFORMING TO ä¸è´æ§
NOTE
SEE ALSO åè§
è·
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
æå页计åï¼https://github.com/man-pages-zh/manpages-zh