2025年udp 广播端口(udp广播发送数据)

udp 广播端口(udp广播发送数据)1 include lt iostream gt 2 include lt stdio h gt 3 include lt stdlib h gt 4 include lt string h gt 5 include lt sys types h gt 6

大家好,我是讯享网,很高兴认识大家。



 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 }

讯享网


讯享网


小讯
上一篇 2025-05-04 16:49
下一篇 2025-04-27 10:37

相关推荐

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容,请联系我们,一经查实,本站将立刻删除。
如需转载请保留出处:https://51itzy.com/kjqy/146831.html