当前位置: 首页 > news >正文

C语言实现UDP广播

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()函数接收数据。

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • 力扣227题基本计算器II(Python实现)
  • Kali Linux——网络安全的瑞士军刀
  • 登录页滑块验证图
  • Windows下编译安装PETSc
  • 简单介绍BTC的Layer2项目RGB
  • Java面试篇(JVM相关专题)
  • C#使用NPOI进行Excel和Word文件处理(二)
  • 房产中介小程序
  • C语言——结构体与共用体
  • Docker 网络代理配置及防火墙设置指南
  • 【云原生之kubernetes实战】在k8s环境下部署Note Mark笔记工具
  • 不仅能防沉迷游戏的防沉迷软件(Python)
  • 24/8/9算法笔记 决策树VS线性回归
  • 景联文科技:破解数据标注行业痛点,引领高质量AI数据服务
  • 二、Matlab图像处理基础
  • 【162天】黑马程序员27天视频学习笔记【Day02-上】
  • AHK 中 = 和 == 等比较运算符的用法
  • Angular 响应式表单之下拉框
  • Cookie 在前端中的实践
  • JavaScript-Array类型
  • js写一个简单的选项卡
  • LeetCode29.两数相除 JavaScript
  • socket.io+express实现聊天室的思考(三)
  • Spring技术内幕笔记(2):Spring MVC 与 Web
  • SQLServer之创建显式事务
  • unity如何实现一个固定宽度的orthagraphic相机
  • 阿里云ubuntu14.04 Nginx反向代理Nodejs
  • 分享自己折腾多时的一套 vue 组件 --we-vue
  • 给Prometheus造假数据的方法
  • 好的网址,关于.net 4.0 ,vs 2010
  • 湖南卫视:中国白领因网络偷菜成当代最寂寞的人?
  • 前嗅ForeSpider中数据浏览界面介绍
  • 使用权重正则化较少模型过拟合
  • 我与Jetbrains的这些年
  • 学习Vue.js的五个小例子
  • 中文输入法与React文本输入框的问题与解决方案
  • hi-nginx-1.3.4编译安装
  • 微龛半导体获数千万Pre-A轮融资,投资方为国中创投 ...
  • # windows 运行框输入mrt提示错误:Windows 找不到文件‘mrt‘。请确定文件名是否正确后,再试一次
  • #Linux杂记--将Python3的源码编译为.so文件方法与Linux环境下的交叉编译方法
  • (1)Map集合 (2)异常机制 (3)File类 (4)I/O流
  • (C语言)逆序输出字符串
  • (LeetCode) T14. Longest Common Prefix
  • (过滤器)Filter和(监听器)listener
  • (教学思路 C#之类三)方法参数类型(ref、out、parmas)
  • (小白学Java)Java简介和基本配置
  • (原創) 博客園正式支援VHDL語法著色功能 (SOC) (VHDL)
  • (转)fock函数详解
  • *setTimeout实现text输入在用户停顿时才调用事件!*
  • .net 4.0发布后不能正常显示图片问题
  • .Net Core与存储过程(一)
  • .NET Micro Framework初体验
  • .NET WPF 抖动动画
  • .Net 基于.Net8开发的一个Asp.Net Core Webapi小型易用框架
  • .NET/C# 使用 #if 和 Conditional 特性来按条件编译代码的不同原理和适用场景