winsock2 bind函数的功能

本文详细解释了bind函数在TCP和UDP套接字编程中的使用方法,包括其参数意义、应用场景以及注意事项。重点阐述了如何通过bind函数为套接字指定本地地址和端口号,并讨论了其对socket状态的影响。

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

 
01.int bind(  
02.__in          SOCKET s,  
03.__in          const struct sockaddr* name,  
04.__in          int namelen  
05.);

bind函数只能用于还没有连接的socket,即只能在connect或者listen之前调用
一个socket只能调用一次bind
所以socket一旦bind就不能在改变了.

bind函数可以用于TCP和UDP

一个socket的名字由地址族,主机地址,标识应用程序的端口号组成
socket函数指定一个地址族,bind函数则指定地址跟端口号

传入的sockaddr中的sin_addr用于指定bind的地址,选择ADDR_ANY让socket bind到任何本机地址
这适合于多个网卡,或者多个ip地址的主机

传入的sockaddr中的port指定bind的端口,如果port为零,则系统会随机赋予1024到5000的端口号.
不推荐客户端使用具体的端口号进行bind,因为可能会跟其它应用程序冲突

对于具体的socket,当bind执行成功后还可以通过getsockname得到与socket相关联的地址
但是如果bind时使用的地址是ADDR_ANY,则只能在socket接收到连接时,才能获得该地址

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值