Linux SO_BROADCAST选项
时间: 2023-12-31 11:24:37 浏览: 178
UDPguangbo.rar_linux udp广播
SO_BROADCAST选项是Linux中的一个套接字选项,用于设置套接字是否允许发送广播消息。当该选项被设置为1时,套接字可以发送广播消息;当该选项被设置为0时,套接字不能发送广播消息。
以下是一个使用SO_BROADCAST选项的示例代码:
```c
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <sys/types.h>
#include <sys/socket.h>
#include <netinet/in.h>
#include <arpa/inet.h>
int main() {
int sockfd;
int opt = 1;
// 创建套接字
sockfd = socket(AF_INET, SOCK_DGRAM, 0);
if (sockfd < 0) {
perror("socket creation failed");
exit(EXIT_FAILURE);
}
// 设置SO_BROADCAST选项
if (setsockopt(sockfd, SOL_SOCKET, SO_BROADCAST, &opt, sizeof(opt)) < 0) {
perror("setsockopt failed");
exit(EXIT_FAILURE);
}
// 发送广播消息
struct sockaddr_in addr;
memset(&addr, 0, sizeof(addr));
addr.sin_family = AF_INET;
addr.sin_port = htons(12345);
addr.sin_addr.s_addr = inet_addr("255.255.255.255");
char *message = "This is a broadcast message";
if (sendto(sockfd, message, strlen(message), 0, (struct sockaddr*)&addr, sizeof(addr)) < 0) {
perror("sendto failed");
exit(EXIT_FAILURE);
}
printf("Broadcast message sent\n");
// 关闭套接字
close(sockfd);
return 0;
}
```
该示例代码创建了一个UDP套接字,并设置了SO_BROADCAST选项为1。然后,它发送一个广播消息到255.255.255.255的地址和12345端口。最后,关闭套接字。
阅读全文