当前位置: 首页 > 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()函数接收数据。
http://www.lryc.cn/news/417535.html

相关文章:

  • 速记Java八股文——Redis 篇
  • CUDA编程05 - GPU内存架构和数据局部性
  • TCP协议程序设计
  • 【C++高阶】:自定义删除器的全面探索
  • Java中的不可变集合、Stream流以及异常处理的
  • LeetCode面试题Day1|LeetCode26 删除有序数组中的重复项、LeetCode80 删除有序数组中的重复项Ⅱ
  • 细说文件操作
  • Vue3从零开始——掌握setup、ref和reactive函数的奥秘
  • C语言练习--屏幕上打印九九乘法表
  • 将tsx引入vue
  • 前端实现签字效果+合同展示
  • [AI Embedchain] 开始使用 - 快速开始
  • Linux网络协议.之 tcp,udp,socket网络编程(三).之多进程实现并发demon
  • Java线程(练习题)
  • MySQL:初识数据库初识SQL建库
  • 关于Redis的集群面试题
  • 带头双向循环链表(一)
  • 深入理解Win32K.sys的工作原理
  • 力扣面试经典算法150题:删除有序数组中的重复项
  • 文本加密工具类-支持MD5、SHA1、SHA256、SHA224、SHA512、SHA384、SHA3、RIPMD160算法
  • LVS集群中的负载均衡技术
  • Java网络编程——HTTP协议原理
  • java之多线程篇
  • 【深度学习】TTS,CosyVoice,训练脚本解析
  • 《Unity3D网络游戏实战》学习与实践
  • Machine_Matrix打靶渗透【附代码】(权限提升)
  • 代码随想录算法训练营Day22 | Leetcode 77 组合 Leetcode 216 组合总和Ⅲ Leetcode17 电话号码的字母组合
  • 【微信小程序实战教程】之微信小程序中的 JavaScript
  • K-近邻算法(一)
  • 从零开始之AI视频制作篇