套接字API(二)bind函数

bind函数用于将本地协议地址绑定到套接字,常见于服务器端,用于指定IP地址和端口号。服务器通常绑定众所周知的端口,而客户端绑定意义较小。若未指定端口,内核会在connect或listen时分配。不绑定IP地址时,内核会根据网络接口选择源IP。使用SO_REUSEADDR和SO_REUSEPORT选项有特殊用途。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一 概述:

(一)功能:

1.bind函数把一个本地协议地址赋予给一个套接字,即套接字绑定。

2.对于网际协议,协议地址是IP地址和端口号的组合。

3.一般而言,服务器都调用bind,而客户端调用bind,绑定客户端套接字地址意义不大。


(二)格式:

1.语法:

*int bind(int sockfd,const struct sockaddr *addr,socklen_t addrlen)

2.参数说明:

*sockfd:socket函数返回的套接字描述符。

*addr:指向特定于协议的地址结构。

*addrlen:该地址结构的长度。

3.套接字是捆绑的主体,IP地址和端口是捆绑在套接字上的客体。

4.IP地址和端口可以都指定、指定一个或都不指定。


二 使用指南:

(一)绑定细节:

1. 端口:一般情况下,服务器在启动时绑定它们众所周知的端口。如果TCP客户或服务器未调用bind绑定一个端口,当调用connect或listen时,内核就要为相应套接字选择一个临时端口。对于TCP客户来说是正常的,但对于服务器却极为罕见。

2. IP地址:进程可以把一个特定的IP地址绑定到它的套接字上,不过这个IP地址必须属于它所在主机的网络接口之一。

*对于TCP客户:为在该套接字上发送的数据报指定了源IP地址。客户通常不把IP地址绑定到套接字上,当连接套接字时,内核根据所用外出网络接口来选择源IP地址,外出接口取决于到达服务器所需的路径。

*对于TCP服务器:就限定该套接字只接收那些目的IP地址为这个IP地址的客户连接。如果服务器没有绑定IP地址,内核就把客户发送SYN的目的IP地址作为服务器的源IP地址。


(二)使用细节:

1.端口号:指定为0,则内核在bind被调用时选择一个临时端口。为了得到这个临时端口名字,必须getsockname来返回协议地址。

2.IP地址:

*IPv4:通配地址由常值INADDR_ANY,其值一般为0,它告知内核去选择IP地址。

*IPv6:通配地址由in6addr_any指定。


三 SO_REUSEADDR和SO_REUSEPORT套接字选项:

*待续。。。





评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值