udp广播的例子

在这里插入图片描述

以下是一个使用C语言描述广播发送和接收的简单示例:

发送端(广播发送):

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <sys/socket.h>
#include <netinet/in.h>
#include <arpa/inet.h>
#include <unistd.h>#define BROADCAST_PORT 8888
#define BROADCAST_ADDRESS "192.168.1.255"  // 替换为您的广播地址int main() {int sockfd;struct sockaddr_in broadcastAddr;char *broadcastMsg = "Hello, broadcast!";// 创建UDP套接字if ((sockfd = socket(AF_INET, SOCK_DGRAM, 0)) < 0) {perror("socket creation failed");exit(EXIT_FAILURE);}// 设置广播选项int broadcastEnable = 1;if (setsockopt(sockfd, SOL_SOCKET, SO_BROADCAST, &broadcastEnable, sizeof(broadcastEnable)) < 0) {perror("setsockopt failed");exit(EXIT_FAILURE);}// 设置广播地址和端口memset(&broadcastAddr, 0, sizeof(broadcastAddr));broadcastAddr.sin_family = AF_INET;broadcastAddr.sin_port = htons(BROADCAST_PORT);if (inet_pton(AF_INET, BROADCAST_ADDRESS, &broadcastAddr.sin_addr) <= 0) {perror("inet_pton failed");exit(EXIT_FAILURE);}// 发送广播消息if (sendto(sockfd, broadcastMsg, strlen(broadcastMsg), 0, (struct sockaddr*)&broadcastAddr, sizeof(broadcastAddr)) < 0) {perror("sendto failed");exit(EXIT_FAILURE);}printf("Broadcast message sent.\n");close(sockfd);return 0;
}

接收端(广播接收):

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <sys/socket.h>
#include <netinet/in.h>
#include <arpa/inet.h>
#include <unistd.h>#define BROADCAST_PORT 8888int main() {int sockfd;struct sockaddr_in myAddr, senderAddr;char recvBuffer[1024];socklen_t senderLen = sizeof(senderAddr);// 创建UDP套接字if ((sockfd = socket(AF_INET, SOCK_DGRAM, 0)) < 0) {perror("socket creation failed");exit(EXIT_FAILURE);}// 设置接收端地址和端口memset(&myAddr, 0, sizeof(myAddr));myAddr.sin_family = AF_INET;myAddr.sin_addr.s_addr = htonl(INADDR_ANY);myAddr.sin_port = htons(BROADCAST_PORT);// 绑定套接字到接收端地址if (bind(sockfd, (struct sockaddr*)&myAddr, sizeof(myAddr)) < 0) {perror("bind failed");exit(EXIT_FAILURE);}// 接收广播消息if (recvfrom(sockfd, recvBuffer, sizeof(recvBuffer)-1, 0, (struct sockaddr*)&senderAddr, &senderLen) < 0) {perror("recvfrom failed");exit(EXIT_FAILURE);}// 打印接收到的广播消息printf("Received broadcast message: %s\n", recvBuffer);close(sockfd);return 0;
}

请注意,上述示例假设广播地址为192.168.1.255,并使用UDP套接字进行广播发送和接收。您可以根据实际情况进行适当的更改,包括广播地址和端口号。

在发送端,我们设置了套接字的广播选项,并将广播消息发送到指定的广播地址和端口。

在接收端,我们绑定套接字到指定的接收端地址和端口,并接收来自广播的消息。

注:广播发送和接收需要在同一个局域网中才能正常工作。
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/300791.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【开源】基于JAVA的学校热点新闻推送系统

目录 一、摘要1.1 项目介绍1.2 项目录屏 二、功能模块2.1 新闻类型模块2.2 新闻档案模块2.3 新闻留言模块2.4 新闻评论模块2.5 新闻收藏模块 三、系统设计3.1 用例设计3.2 数据库设计3.2.1 新闻类型表3.2.2 新闻表3.2.3 新闻留言表3.2.4 新闻评论表3.2.5 新闻收藏表 四、系统展…

电脑找回彻底删除的文件,记好这3个正确方法!

“如果我在电脑上存储了某些很重要的文件&#xff0c;但是我一不小心将它们删除了怎么办&#xff1f;这是不是意味着我把文件彻底删除了呢&#xff1f;有什么方法可以帮助我找回这些文件的吗&#xff1f;” 在我们的日常生活和工作中&#xff0c;可能会将一些很重要的文件都保存…

12月25日作业

串口发送控制命令&#xff0c;实现一些外设LED 风扇 uart4.c #include "uart4.h"void uart4_config() {//1.使能GPIOB\GPIOG\UART4外设时钟RCC->MP_AHB4ENSETR | (0x1 << 1);RCC->MP_AHB4ENSETR | (0x1 << 6);RCC->MP_APB1ENSETR | (0x1 <…

基于Java开发的微信约拍小程序

一、系统架构 前端&#xff1a;vue | element-ui 后端&#xff1a;springboot | mybatis 环境&#xff1a;jdk8 | mysql8 | maven | mysql 二、代码及数据库 三、功能说明 01. 首页 02. 授权登录 03. 我的 04. 我的-编辑个人资料 05. 我的-我的联系方式 06. …

js显示前七天的日期,前几天依次类推

1.效果图 2.js代码 function beforetime1() {let now new Date();//想获取前七天日期就减七&#xff0c;前六天就减六&#xff0c;以此类推var date new Date(now.getTime() - 7 * 24 * 3600 * 1000);var y date.getFullYear();var m date.getMonth() 1;m m < 10 ? …

项目中关于地理坐标/位置相关需求的实现思路

实现思路&#xff1a;通过Redis中的GEO数据结构进行实现 一、GEO命令&#xff1a; 1.命令示例&#xff1a; GEOADD g1 116.378248 39.865275 bjn 116.42803 39.903738 bjz 116.322287 39.893729 bjx输出结果&#xff1a; 2.计算bjx&#xff08;北京西站&#xff09;到bjn&…

牛客周赛 Round 22 解题报告 | 珂学家 | 思维构造 + 最小生成树

前言 整体评价 C题这个构造题挺好的&#xff0c;赛中把-1写成No, 直接整不会了&#xff0c;T_T. D题是一道很裸的最小生成树题&#xff0c;只需要一个小小的逆向思维&#xff0c;把删除操作转换为构建过程。 欢迎关注 珂朵莉 牛客周赛专栏 珂朵莉 牛客小白月赛专栏 A. 小红…

【51单片机系列】DS18B20温度传感器模块

本文是关于温度传感器的相关内容。 文章目录 一、 DS18B20数字温度传感器介绍1.1、 DS18B20温度传感器的特点1.2、DA18B20内部结构1.3、 DS18B20的温度转换规则1.4、 DS18B20的ROM指令表1.6、 计算温度1.7、 读写时序 二、DS18B20使用示例 一、 DS18B20数字温度传感器介绍 DS1…

2024年科技盛宴“上海智博会·上海软博会”招商工作接近尾声

2024年上海智博会和上海软博会即将于3月份在上海跨国采购会展中心盛大召开。作为全球科技和软件行业的盛会&#xff0c;这两大展会汇集了业界顶尖的企业、创新技术和前瞻思想&#xff0c;吸引了来自世界各地的专业人士和参展商。 今年的展会将一如既往地为大家呈现最前沿的科技…

MAC鼠标中键的使用

MAC鼠标没有鼠标中键&#xff0c;于是在一些场景中用起来非常麻烦&#xff0c;这里介绍几种键盘快捷键鼠标左键实现中键功能的例子&#xff1a; 1&#xff09;在sublime text 或者pycharm等一些文本编辑器或IDE中实现中键修改一列数据中特定位置的值 FNOPT左键另外还有C4D&…

C# 学习网站

C# 文档 - 入门、教程、参考。 | Microsoft Learnhttps://learn.microsoft.com/zh-cn/dotnet/csharp/ Browse code samples | Microsoft LearnGet started with Microsoft developer tools and technologies. Explore our samples and discover the things you can build. htt…

真心建议,入职业务部门前先学会BI数据分析

不管进入哪个业务部门&#xff0c;都需要具备一定的数据分析能力&#xff0c;能够从不断累积的数据中发现并解决问题。比如销售部门的需要通过分析销售数据&#xff0c;及时发现销售不佳的商品&#xff0c;调整销售策略&#xff0c;提高销售额、销售利润等。而随着精细化数据分…