广播:实现一对多的通信
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