UDP收/发广播包是指UDP协议发送的数据包可以被多个接收方接收到,这种方式可以实现计算机网络中的信息传播。
实现UDP收/发广播包的方法主要有以下几种:
// 创建UDP socket int sockfd = socket(AF_INET, SOCK_DGRAM, 0); if (sockfd < 0) { printf("create socket failed!\n"); return -1; }
// 设置UDP socket属性 int opt = 1; setsockopt(sockfd, SOL_SOCKET, SO_BROADCAST, &opt, sizeof(opt));
// 设置UDP socket地址 struct sockaddr_in addr; addr.sin_family = AF_INET; addr.sin_port = htons(PORT); addr.sin_addr.s_addr = INADDR_ANY; if (bind(sockfd, (struct sockaddr *)&addr, sizeof(addr)) < 0) { printf("bind socket failed!\n"); return -1; }
// 发送UDP广播包 struct sockaddr_in addr; addr.sin_family = AF_INET; addr.sin_port = htons(PORT); addr.sin_addr.s_addr = INADDR_BROADCAST; if (sendto(sockfd, buf, len, 0, (struct sockaddr *)&addr, sizeof(addr)) < 0) { printf("sendto failed!\n"); return -1; }
// 接收UDP广播包 struct sockaddr_in addr; socklen_t addr_len = sizeof(addr); if (recvfrom(sockfd, buf, len, 0, (struct sockaddr *)&addr, &addr_len) < 0) { printf("recvfrom failed!\n"); return -1; }
以上就是,通过这种方法可以实现UDP协议的信息传播。
本文链接:http://task.lmcjl.com/news/9992.html