udp socket的bind问题

最近在写udp程序的时候,对udp是否有必要bind存在了一定的疑惑,针对这个问题在网上查找了一些相关文章,并自己也写了部分代码进行验证。下面写出了自己的一点认识和感受。

众所周知,udp不是stream的,实际上没有什么标定的服务端和客户端之类的(习惯上认为接收数据的一端为服务端,发送数据的一端为客户端),那么bind还有意义吗?我个人认为主要看你是怎么用的,bind主要是指定创建的socket的有效范围,即这个socket涉及的有效ip地址和端口号,我们在创建socket后,往往要先设定插口的参数,比如缓存区大小,还有就是有效的ip地址,端口号等,使用bind就是使得这些设置生效。比如:

对于发送数据端,如果不用bind,则无固定端口发送,系统会自动选取一个端口(范围在1024--5000之间)发送数据。如果使用bind,就是用指定的端口发送数据。实际上,发送端一般只需要在sendto函数中指定对端ip地址和端口即可,至于本地是使用哪个端口发送应该无所谓,所以发送数据一般不需要bind。

对于接收数据端,一般在实际应用中都会指定接收XX端口的数据,所以接收数据一般使用bind。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值