2020/2/21 Linux Socket编程 高级篇——广播

本文详细探讨了Linux Socket编程中的广播通信,重点介绍了SO_BROADCAST选项,用于控制UDP套接字是否能发送广播数据报。同时,讲解了SO_SNDBUF和SO_RCVBUF选项,用于设置发送和接收缓冲区的大小。此外,还详细解释了IPv4广播地址的种类,如子网广播地址、全部子网广播地址和受限广播地址。并补充了IP地址、子网掩码和网关的相关知识。

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

广播:实现一对多的通信

SO_BROADCAST选项

它控制了UDP套接字是否能发广播数据报,选项类型是int,非零表示“是”。  只有UDP能用,TCP不能。

如果是一个广播地址,但SO_BROADCAST 选项却没有被设定, 就会返回EACCES错误。

int opt = 1;
if((sockdfd = socket(AF_INET, SOCK_DGRA, 0)) < 0){
    //perror
}
if(setsockopt(sockfd, SOL_SOCKET, SO_BROADCAST, %op, sizeof(opt)) < 0){
    //perror
}

SO_SNDBUF选项 & SO_RCVBUF选项

每个套接字都有一个发送缓冲区和接收缓冲区,由底层协议使用。这两个选项分别控制发送和接收缓存区的大小,类型为int,以字节为单位。

通过getsockopt函数获得发送缓存区的大小,默认的缓存区大小存储在函数的第四个参数opt中;

通过setsockopt函数可以重新设置发送缓存区的大小。

if((sockfd = socket(AF_INET, SOCK_STREAM, 0)) < 0){
    perror()
}
 
if((getsockopt(sock
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值