C语言 小代码 UDP组播

news/2024/5/18 14:41:25 标签: c语言, udp, 开发语言

实现将本地IP加入指定组播IP中

#include <stdio.h>
#include <sys/socket.h>
#include <netinet/in.h>
#include <netinet/ip.h> /* superset of previous */
#include <arpa/inet.h>
#include <sys/socket.h>
#include <netinet/in.h>
#include <arpa/inet.h>
#include <unistd.h>

int main()
{
    // 1.创建UDP通信对象
    int udp_socket = socket(AF_INET, SOCK_DGRAM, 0);

    // 2.绑定
    struct sockaddr_in server_addr;
    server_addr.sin_family = AF_INET;
    server_addr.sin_port = htons(8888);
    server_addr.sin_addr.s_addr = INADDR_ANY;
    int ret = bind(udp_socket, (struct sockaddr *)&server_addr, sizeof(server_addr));
    if (ret < 0)
    {
        perror("绑定失败\n");
        return -1;
    }

    /*
struct ip_mreq
{
struct in_addr imr_multiaddr; //组播的IP地址
struct in_addr imr_interface; //需要加入组播的IP地址
}
    */
    // 3.加入组播
    struct ip_mreq mreq;
    mreq.imr_multiaddr.s_addr = inet_addr("224.10.10.10"); // 设置一个组播地址
    mreq.imr_interface.s_addr = INADDR_ANY;                // 把本地所有网卡加入组播地址

    // 开启组播功能
    ret = setsockopt(udp_socket, IPPROTO_IP, IP_ADD_MEMBERSHIP, &mreq, sizeof(mreq));
    if (ret < 0)
    {
        perror("加入组播失败\n");
        return -1;
    }
    else
    {
        printf("加入组播成功\n");
    }

    // 开始接收组播数据
    while (1)
    {
        char buf[1024] = {0};
        int len = recvfrom(udp_socket, buf, sizeof(buf), 0, NULL, NULL);
        printf("len=%d,buf=%s\n", len, buf);
    }
}

如有不懂请往主页查看相应API


http://www.niftyadmin.cn/n/4950887.html

相关文章

技术转项目管理需要做什么?

最近也有许多技术想转项目管理行业&#xff0c;今天小编给大家分析一下&#xff0c;技术转项目前景怎么样&#xff1f;都需要做些什么&#xff1f; 首先技术行业一直以来都是近些年比较热门的行业&#xff0c;许多人也都在技术领域有着丰富的经验。然而&#xff0c;随着职业发…

【爬虫练习之glidedsky】爬虫-基础1

题目 链接 爬虫的目标很简单&#xff0c;就是拿到想要的数据。 这里有一个网站&#xff0c;里面有一些数字。把这些数字的总和&#xff0c;输入到答案框里面&#xff0c;即可通过本关。 思路 找到调用接口 分析response 代码实现 import re import requestsurl http://www.…

调用其他页面onload函数的方法

在微信小程序中&#xff0c;可以通过以下方法来触发其他页面的 onLoad 函数执行&#xff1a; 使用全局事件订阅机制&#xff1a;在 App 实例中定义一个全局事件&#xff0c;在需要触发的地方发布该事件&#xff0c;在每个页面的 onLoad 函数中订阅该事件&#xff0c;并在回调函…

信息熵,信息增益,增益率的理解

西瓜数据集D如下: 编号色泽根蒂敲声纹理脐部触感好瓜1青绿蜷缩浊响清晰凹陷硬滑是2乌黑蜷缩沉闷清晰凹陷硬滑是3乌黑蜷缩浊响清晰凹陷硬滑是4青绿蜷缩沉闷清晰凹陷硬滑是5浅白蜷缩浊响清晰凹陷硬滑是6青绿稍蜷浊响清晰稍凹软粘是7乌黑稍蜷浊响稍糊稍凹软粘是8乌黑稍蜷浊响清晰…

程序代做服务:解放您的编程烦恼

导言&#xff1a; 在现代技术驱动的社会中&#xff0c;编程已经成为了解决问题和创新的重要手段。然而&#xff0c;不是每个人都拥有编程的技能和时间来完成复杂的编程任务。在这样的情况下&#xff0c;程序代做服务应运而生&#xff0c;为那些需要技术支持的个人和企业提供了便…

山西电力市场日前价格预测【2023-08-19】

日前价格预测 预测明日&#xff08;2023-08-19&#xff09;山西电力市场全天平均日前电价为366.41元/MWh。其中&#xff0c;最高日前电价为406.33元/MWh&#xff0c;预计出现在18: 30。最低日前电价为344.68元/MWh&#xff0c;预计出现在13: 30。 价差方向预测 1&#xff1a; 实…

ubuntu20.04共享文件夹—— /mnt/hgfs里没有共享文件夹

参考文章&#xff1a;https://blog.csdn.net/Edwinwzy/article/details/129580636 虚拟机启用共享文件夹后&#xff0c;/mnt/hgfs下面为空&#xff0c;使用 vmware-hgfsclient 查看设置的共享文件夹名字也是为空。 解决方法&#xff1a; 1. 重新安装vmware tools. 在菜单…

arcgis--坐标系

1、arcgis中&#xff0c;投影坐标系的y坐标一定是7位数&#xff0c;X坐标有两种&#xff1a;6位和8位。 6位&#xff1a;省略带号&#xff0c;这是中央经线形式的投影坐标&#xff0c;一般投影坐标中会带CM字样&#xff1b;8位&#xff1a;包括带号&#xff0c;一般投影坐标中…