c语言实现udp广播和组播

本文介绍了UDP协议中的广播和组播通信方式,包括广播通信中如何向局域网内的所有主机发送数据,以及组播通信中如何向特定组内的主机发送数据。提供了C语言实现的广播和组播发送端和接收端的示例代码,详细解释了设置套接字、绑定IP和端口、发送与接收数据的步骤,并讨论了IP地址的分类。

目录

1、UDP广播通信

2、UDP组播通信

1、UDP广播通信

单播:数据包发送方式只有一个接受方

广播:同时发给局域网中的所有主机

只有用户数据报套接字(使用UDP协议)才能广播

以192.168.63.0网段为例:..***.255 代表该网段的广播地址。发送给该地址的数据包被所有主机接收

实现广播的过程(UDP协议)

 广播发送端: ----> 添加广播属性

1、建立套接字

2、设置该套接字允许进行广播(将广播属性添加进去),填充服务端的结构体

3、将数据发送到广播地址中(sendto(buf,192.168.x.x))

4、关闭

接收端(服务器): ----> 绑定所有主机(INADDR_ANY)

1、建立套接字

2、填充服务端的结构体,绑定广播地址和端口号(struct sockaddr_in serveraddr,serveraddr.sin_addr.s_addr = htonl(INADDR_ANY)))(需要设置端口复用) 3、创建结构体存放客户端IP和端口,接收数据

4、关闭

//2、将广播属性添加到套接字中 int on = 1; setsockopt(socketfd,SOL_SOCKET,SO_BROADCAST,&on,sizeof(on)); ownaddr.sin_addr.s_addr = htonl(INADDR_ANY); //INADDR_ANY代表本机所有地址 常用方法

 广播的测试代码如下:

#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <unistd.h>
#include <sys/types.h>
#include <sys/socket.h>
#include <arpa/inet.h>
#include <netinet/in.h>

#define GUANG_IP "192.168.5.255"    //---> 你所在局域网的广播地址
#define GUANG_PORT 60000

//udp广播server.c
int main(int argc,char** argv)
{
    //如果手动输入IP和地址
    // if(argc != 3)
    // {
    //     perror("./a.out IP PORT");
    //     return -1;
    // }

    int ret = 0;
    char buf[1024] = { 0 };

    //1、创建一个套接字文件描述符
    int socketfd = socket(AF_INET,SOCK_DGRAM,0);
    if(socketfd == -1)
    {
        perror("socket fail");
        return -1;
    }

    //设置端口复用
    int optval = 1;
    
评论 3
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值