linux UDP 多播 例子
阿新 • • 發佈:2019-02-15
參考修改自:https://blog.csdn.net/fssssssss/article/details/38865567
#include <stdio.h> #include <stdlib.h> #include <unistd.h> #include <fcntl.h> #include <sys/socket.h> #include <netinet/in.h> #include <arpa/inet.h> #include <string.h> #include <errno.h> #include <sys/types.h> int main(int argc, char*argv) { int sockfd; // 套接字檔案描述符 struct sockaddr_in dest_addr; // 目標ip char buf[] = "HELLO BROADCAST TEST DATA"; sockfd = socket(AF_INET, SOCK_DGRAM, 0); // 建立套接字 if (sockfd == -1) { perror("socket()"); return -1; } const int opt = -1; int nb = 0; setsockopt(sockfd, SOL_SOCKET, SO_BROADCAST, (char*)&opt, sizeof(opt));//設定套接字型別 // 初始化目標 ip 資訊 memset(&dest_addr, 0, sizeof(dest_addr)); dest_addr.sin_family = AF_INET; dest_addr.sin_addr.s_addr = htonl(INADDR_BROADCAST); // 目的地址,為多播地址 //dest_addr.sin_addr.s_addr = inet_addr("192.168.255.255"); // 目的地址,為多播地址 dest_addr.sin_port = htons(50002); // 多播伺服器的埠也是 8000 // 向多播地址傳送資料 while(1){ int n = sendto(sockfd, buf, strlen(buf), 0,(struct sockaddr*)&dest_addr, sizeof(dest_addr)); if(n < 0) { perror("sendto()"); return -2; } sleep(3); } return 0; }