UDP 组播通信 linux网络编程

UDP组播

通常,在传统的网络通讯中,有两种方式,一种是源主机和目标主机两台主机之间进行的“一对一”的通讯方式,即单播,第二种是一台源主机与网络中所有其他主机之间进行的通讯,即广播。那么,如果需要将信息从源主机发送到网络中的多个目标主机,要么采用广播方式,这样网络中所有主机都会收到信息,要么,采用单播方式,由源主机分别向各个不同目标主机发送信息。
可以看出来,在广播方式下,信息会发送到不需要该信息的主机从而浪费带宽资源,甚至引起广播风暴:而单播方式下,会因为数据包的多次重复而浪费带宽资源,同时,源主机的负荷会因为多次的数据复制而加大,所以,单播与广播对于多点发送问题有缺陷。
在此情况下,组播技术就应用而生了。
组播又称多目标广播、多播。网络中使用的一种传输方式,它允许把 所发消息传送给所有可能目的地中的一个经过选择的子集,即向明确指出的多种地址输送信息。是一种在一个发送者和多个接收者之间进行通信的方法。

组播地址分类

224.0.0.1-239.255.255.255为组播地址块,其中分为本地网络服务控制块、全局有效组播地址、局部私有组播地址:

224.0.0.0-224.0.0.255为本地网络服务控制块

224.0.1.0-238.255.255.255为全局有效组播地址

239.0.0.0-239.255.255.255为局部私有组播地址

代码实现如下

服务器端

#include<stdio.h>
#include<stdlib.h>
#include<unistd.h>
#include<fcntl.h>
#include<sys/types.h>
#include<string.h>
#include<net/if.h>
#include<arpa/inet.h>

#define SERV_PORT 6666
#define CLIENT_PORT 8888
#define MAXLINE 1500

#define GROUP "239.0.0.2"

int main(void)
{
   
    int sockfd;
    struct sockaddr_in serv_addr,clie_addr;
    char buf[MAXLINE]="itcast\n";
    struct ip_mreqn group;

    sockfd = socket(AF_INET,SOCK_DGRAM,0); //用于UDP通信的套接字

    bzero
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值