多播包的发送与接收
来源:互联网 发布:mac压缩包密码破解 编辑:程序博客网 时间:2024/06/14 07:44
Listener Program#include <sys/types.h>#include <sys/socket.h>#include <netinet/in.h>#include <arpa/inet.h>#include <time.h>#include <string.h>#include <stdio.h>#define HELLO_PORT 12345#define HELLO_GROUP "225.0.0.37"#define MSGBUFSIZE 256main(int argc, char *argv[]){ struct sockaddr_in addr; int fd, nbytes,addrlen; struct ip_mreq mreq; char msgbuf[MSGBUFSIZE]; u_int yes=1; /* create what looks like an ordinary UDP socket */ if ((fd=socket(AF_INET,SOCK_DGRAM,0)) < 0) { perror("socket"); exit(1); } /* allow multiple sockets to use the same PORT number */ if (setsockopt(fd,SOL_SOCKET,SO_REUSEADDR,&yes,sizeof(yes)) < 0) { perror("Reusing ADDR failed"); exit(1); } /* set up destination address */ memset(&addr,0,sizeof(addr)); addr.sin_family=AF_INET; addr.sin_addr.s_addr=htonl(INADDR_ANY); /* N.B.: differs from sender */ addr.sin_port=htons(HELLO_PORT); /* bind to receive address */ if (bind(fd,(struct sockaddr *) &addr,sizeof(addr)) < 0) { perror("bind"); exit(1); } /* use setsockopt() to request that the kernel join a multicast group */ mreq.imr_multiaddr.s_addr=inet_addr(HELLO_GROUP); mreq.imr_interface.s_addr=htonl(INADDR_ANY); if (setsockopt(fd,IPPROTO_IP,IP_ADD_MEMBERSHIP,&mreq,sizeof(mreq)) < 0) { perror("setsockopt"); exit(1); } /* now just enter a read-print loop */ while (1) { addrlen=sizeof(addr); if ((nbytes=recvfrom(fd,msgbuf,MSGBUFSIZE,0, (struct sockaddr *) &addr,&addrlen)) < 0) { perror("recvfrom"); exit(1); } puts(msgbuf); }}#include <sys/types.h>#include <sys/socket.h>#include <netinet/in.h>#include <arpa/inet.h>#include <time.h>#include <string.h>#include <stdio.h>#define HELLO_PORT 12345#define HELLO_GROUP "225.0.0.37"main(int argc, char *argv[]){ struct sockaddr_in addr; int fd, cnt; struct ip_mreq mreq; char message[16]="Hello, World!"; /* create what looks like an ordinary UDP socket */ if ((fd=socket(AF_INET,SOCK_DGRAM,0)) < 0) { perror("socket"); exit(1); } /* set up destination address */ memset(&addr,0,sizeof(addr)); addr.sin_family=AF_INET; addr.sin_addr.s_addr=inet_addr(HELLO_GROUP); addr.sin_port=htons(HELLO_PORT); /* now just sendto() our destination! */ while (1) { if (sendto(fd,message,sizeof(message),0,(struct sockaddr *) &addr, sizeof(addr)) < 0) { perror("sendto"); exit(1); } sleep(1); }}
0 0
- 多播包的发送与接收
- 广播的发送与接收
- 广播的发送与接收
- 广播的发送与接收
- 发送/接收数据包与发送/接收字节的区别.
- 组播的发送与接收问题
- 短信猫的发送与接收
- 实验五 消息的发送与接收
- 对话框最小化消息 的发送与接收
- 实验五 消息的发送与接收
- 异步串口的发送与接收
- 设置SOCKET的发送与接收缓冲区
- 简单的广播发送与接收
- 消息队列的发送与接收.
- 自定义消息的发送与接收处理
- socket的发送与接收缓冲区
- 设置SOCKET的发送与接收缓冲区
- 设置SOCKET的发送与接收缓冲区 .
- REHL LINUX 配置本地yum源的方法
- pcl中遇到的问题
- vim 中文乱码解决办法
- 瑞年平年
- Deep Learning in NLP (一)词向量和语言模型
- 多播包的发送与接收
- Leetcode Q4:Median of Two Sorted Arrays
- iOS 编程 利用UIScrollView 编写无缝循环显示图片
- 黑马程序员_交通灯系统
- 数据库题——高于部门平均工资查询问题
- 时间处理
- Elevator
- vc6.0下,GDI+的配置
- Highcharts数据表示(2)