C语言实现UDP广播

news/2024/11/13 9:20:56/

UDP 广播发送方
1.创建套接字:使用socket()函数创建一个UDP套接字。
2.设置套接字选项:使用setsockopt()函数设置SO_BROADCAST选项以允许广播。
3.发送数据:使用sendto()函数将数据发送到特定的广播地址和端口。

#include <stdio.h>  
#include <stdlib.h>  
#include <string.h>  
#include <unistd.h>  
#include <netinet/in.h>  
#include <sys/socket.h>  #define PORT 8080  
#define BROADCAST_IP "255.255.255.255"  int main() {  int sockfd;  struct sockaddr_in broadcastAddr;  char broadcast_data[] = "Hello, UDP Broadcast!";  int broadcast_len = strlen(broadcast_data) + 1;  // 创建UDP套接字  if ((sockfd = socket(AF_INET, SOCK_DGRAM, 0)) < 0) {  perror("socket() failed");  exit(EXIT_FAILURE);  }  // 设置广播选项  int opt = 1;  if (setsockopt(sockfd, SOL_SOCKET, SO_BROADCAST, &opt, sizeof(opt)) < 0) {  perror("setsockopt() failed");  exit(EXIT_FAILURE);  }  memset(&broadcastAddr, 0, sizeof(broadcastAddr));  broadcastAddr.sin_family = AF_INET;  broadcastAddr.sin_addr.s_addr = inet_addr(BROADCAST_IP);  broadcastAddr.sin_port = htons(PORT);  // 发送广播数据  if (sendto(sockfd, broadcast_data, broadcast_len, 0,  (struct sockaddr *)&broadcastAddr, sizeof(broadcastAddr)) < 0) {  perror("sendto() sent a failed");  exit(EXIT_FAILURE);  }  printf("Broadcast sent\n");  close(sockfd);  return 0;  
}

UDP 广播接收方

  1. 创建套接字:与发送方相同。
  2. 绑定套接字:接收方需要绑定到一个特定的IP地址和端口上,或者使用INADDR_ANY来监听所有接口的数据。
  3. 接收数据:使用recvfrom()函数接收数据。

http://www.ppmy.cn/news/1505644.html

相关文章

Unity实现屏幕黑边--游戏画面和UI异形屏处理(安全区渲染)

在手机上&#xff0c;如果想以黑边形式显示游戏画面&#xff0c;比如显示区域避开异形屏、水滴屏那一行。有很多种思路&#xff0c;最后觉得下面这种方法比较简单合适&#xff0c;下面分享一下。 方法&#xff1a;需要分别处理&#xff0c;游戏画面黑边、UI黑边&#xff1a; …

免费https证书申请和安装

一、申请免费SSL证书 选择证书颁发机构&#xff08;CA&#xff09;&#xff1a; 对于个人博客、小型企业网站或非盈利组织&#xff0c;可以选择JoySSL等提供免费SSL证书的服务商。JoySSL因其完全免费和广泛支持的特点而受到许多用户的青睐。用户注册-JoySSLhttps://www.joyssl…

.NET C# 将文件夹压缩至 zip

.NET C# 将文件夹压缩至 zip 文章目录 .NET C# 将文件夹压缩至 zip1 使用 System.IO.Compression1.1 环境1.2 压缩文件夹1.2.1 简单压缩1.2.2 复杂压缩 1.3 解压缩1.3.1 简单解压缩1.3.2 复杂解压缩 2 使用 SharpZipLib2.1 环境2.2 压缩文件夹2.3 解压缩 3 压缩效果简单测试 1 …

前端 CSS 20道面试题详解

引言 CSS 是前端开发中不可或缺的一部分&#xff0c;掌握 CSS 的基础知识和技巧对于前端开发者来说至关重要。本文将通过 20 道常见的 CSS 面试题&#xff0c;帮助你巩固 CSS 知识&#xff0c;准备面试。 1. 什么是盒模型&#xff1f; 答&#xff1a;盒模型是 CSS 中描述元素…

SpringBoot+Vue 简单小文章项目开发全过程

文章目录 一、项目介绍二、需求设计三、数据库设计四、项目构建项目技术选型:构建项目说明:项目架构mavenMySQLRedis 五、项目开发&#xff1a;项目开发思路&#xff1a;项目开发过程&#xff1a;1. 导入文件包/新建项目2. 新建子模块&#xff1a;common模块pojo模块server模块…

YN35V00018F2、KDRDE5K-31/30C40-111比例插装阀控制器

KDRDE5K-31/30C40-111、SKX5P-17-209、KDRDE5K-20/40C04-109、YN35V00049F1、KDRDE5K-31/40C50-213、111-9916、KDRDE5K-31/40E30-137、YN35V00019F1、KDRDE5K-31/30C40-101、YB35V00005F1、KDRDE5K-31/30C50-107、YB35V00004F1、KDRDE5K-20/30C12A-111、YN35V00048F1、KDRDE5K…

can not insert null to xxx.(ID)

场景&#xff1a; 在执行保存方法时报错can not insert null to xxx.(ID) 分析&#xff1a; 这个错误表明时因为数据库id设置了主键唯一且不为空&#xff0c;而插入的时候为null所以报错&#xff0c;我的项目使用的oracle数据库&#xff0c;跟mysql数据库直接设置自增不一样&…

大数据-68 Kafka 高级特性 物理存储 日志存储概述

点一下关注吧&#xff01;&#xff01;&#xff01;非常感谢&#xff01;&#xff01;持续更新&#xff01;&#xff01;&#xff01; 目前已经更新到了&#xff1a; Hadoop&#xff08;已更完&#xff09;HDFS&#xff08;已更完&#xff09;MapReduce&#xff08;已更完&am…