1 #include<iostream> 2 #include<stdio.h> 3 #include<stdlib.h> 4 #include<string.h> 5 #include<sys/types.h> 6 #include<unistd.h> 7 #include<sys/socket.h> 8 #include<netdb.h> 9 #include<arpa/inet.h> 10 #include<netinet/in.h> 11 #define MCAST_PORT 8888 12 #define MCAST_ADDR "224.0.0.88" /*一个局部连接多播地址,路由器不进行转发*/ 13 #define MCAST_INTERVAL 5 //发送时间间隔 14 #define BUFF_SIZE 256 //接收缓冲区大小 15 using namespace std; 16 int main() 17 { 18 int sock; 19 struct sockaddr_in local_addr; 20 int err=-1; 21 sock=socket(AF_INET,SOCK_DGRAM,0); 22 if(sock==-1) 23 { 24 cout<<"sock error"<<endl; 25 return -1; 26 } 27 /*初始化地址*/ 28 local_addr.sin_family=AF_INET; 29 local_addr.sin_addr.s_addr=htonl(INADDR_ANY); 30 local_addr.sin_port=htons(MCAST_PORT); 31 /*绑定socket*/ 32 err=bind(sock,(struct sockaddr*)&local_addr,sizeof(local_addr)); 33 if(err<0) 34 { 35 cout<<"bind error"<<endl; 36 return -2; 37 } 38 /*设置回环许可*/ 39 int loop=1; 40 err=setsockopt(sock,IPPROTO_IP,IP_MULTICAST_LOOP,&loop,sizeof(loop)); 41 if(err<0) 42 { 43 cout<<"set sock error"<<endl; 44 return -3; 45 } 46 struct ip_mreq mreq;/*加入广播组*/ 47 mreq.imr_multiaddr.s_addr=inet_addr(MCAST_ADDR);//广播地址 48 mreq.imr_interface.s_addr=htonl(INADDR_ANY); //网络接口为默认 49 /*将本机加入广播组*/ 50 err=setsockopt(sock,IPPROTO_IP,IP_ADD_MEMBERSHIP,&mreq,sizeof(mreq)); 51 if(err<0) 52 { 53 cout<<"set sock error"<<endl; 54 return -4; 55 } 56 int times=0; 57 socklen_t addr_len=0; 58 char buff[BUFF_SIZE]; 59 int n=0; 60 /*循环接受广播组的消息,5次后退出*/ 61 for(times=0;;times++) 62 { 63 addr_len=sizeof(local_addr); 64 memset(buff,0,BUFF_SIZE); 65 n=recvfrom(sock,buff,BUFF_SIZE,0,(struct sockaddr*)&local_addr,&addr_len); 66 if(n==-1) 67 { 68 cout<<"recv error"<<endl; 69 return -5; 70 } 71 /*打印信息*/ 72 printf("RECV %dst message from server : %s ",times,buff); 73 sleep(MCAST_INTERVAL); 74 } 75 /*退出广播组*/ 76 err=setsockopt(sock,IPPROTO_IP,IP_DROP_MEMBERSHIP,&mreq,sizeof(mreq)); 77 close(sock); 78 return 0; 79 }到此这篇udp 广播端口(udp广播发送数据)的文章就介绍到这了,更多相关内容请继续浏览下面的相关 推荐文章,希望大家都能在编程的领域有一番成就!
版权声明:
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若内容造成侵权、违法违规、事实不符,请将相关资料发送至xkadmin@xkablog.com进行投诉反馈,一经查实,立即处理!
转载请注明出处,原文链接:https://www.xkablog.com/sjkxydsj/21547.html