devc++ 使用 winsock 实现 UDP 局域网 WIFI 广播
参考链接
使用UDP发送广播报_udp广播 inaddr_broadcast-CSDN博客
UDP接收端收不到广播的消息问题排查_unity upd广播连接不上是什么情况-CSDN博客
如何禁用自己电脑的虚拟网卡-百度经验 (baidu.com)
但是wifi 会屏蔽255.255.255.255 广播地址,所以 255.255.255.255 需要借助手机 wifi 路由实现真正局域网内广播,两台电脑连上同一个手机热点后,就可以发消息了。
一般的局域网游戏需要 UDP 广播,然后获取到 IP 才能定向发送消息。
而广播 UDP 的方法和 UDP 定向发送的 方法有些出入,这里是 移植到 DEVC++ 的 UDP 局域网广播方法。
参考第二条连接,在两台电脑连上同一个手机热点后,如果 UDP 还收不到消息:
同一个交换机下 是可以收到广播的 还有就是
电脑的虚拟网卡会拦截广播操作,因为你没有指定一个地址,所以代码正确的情况下,发送不出去或者接收不到,只需要考虑以下两种情况。
1.广播端虚拟网卡没有禁用
2.接收端虚拟网卡没有禁用
PS.虚拟网卡一般是装了虚拟机才会有的。
服务端
// 服务器端
// Server.cpp : Defines the entry point for the console application.
//
#include <WinSock2.h>
#include <stdio.h>
#pragma comment(lib, "ws2_32.lib")
#pragma warning(disable : 4996)
const int MAX_BUF_LEN = 255;int main(int argc, CHAR* argv[])
{WORD wVersionRequested;WSADATA wsaData;int err;// 启动socket apiwVersionRequested = MAKEWORD( 2, 2 );err = WSAStartup( wVersionRequested, &wsaData );if ( err != 0 ){return -1;}if ( LOBYTE( wsaData.wVersion ) != 2 ||HIBYTE( wsaData.wVersion ) != 2 ){WSACleanup( );return -1;}// 创建socketSOCKET connect_socket;connect_socket = socket(AF_INET, SOCK_DGRAM, IPPROTO_UDP);if(INVALID_SOCKET == connect_socket){err = WSAGetLastError();printf("/""socket/"" error! error code is %d/n", err);return -1;}SOCKADDR_IN sin;sin.sin_family = AF_INET;sin.sin_port = htons(3779);sin.sin_addr.s_addr = INADDR_BROADCAST; // 255.255.255.255 但是会被路由器屏蔽,不过借用手机热点可以广播,只要两个电脑连同一个手机热点就能广播 bool bOpt = true;//设置该套接字为广播类型setsockopt(connect_socket, SOL_SOCKET, SO_BROADCAST, (char*)&bOpt, sizeof(bOpt));int nAddrLen = sizeof(SOCKADDR);char buff[MAX_BUF_LEN] = "";int nLoop = 0;while(1){nLoop++;sprintf(buff, "%8d", nLoop);// 发送数据int nSendSize = sendto(connect_socket, buff, strlen(buff), 0, (SOCKADDR*)&sin, nAddrLen);if(SOCKET_ERROR == nSendSize){err = WSAGetLastError();printf("/""sendto/"" error!, error code is %d/n", err);return -1;}printf("Send: %s/n", buff);Sleep(500);}return 0;
}
客户端
// 客户端
// Client.cpp : Defines the entry point for the console application.
//
#include <WinSock2.h>
#include <stdio.h>
#pragma comment(lib, "ws2_32.lib") #pragma warning(disable : 4996)
const int MAX_BUF_LEN = 255; int main(int argc, CHAR* argv[])
{ WORD wVersionRequested; WSADATA wsaData; int err; // 启动socket api wVersionRequested = MAKEWORD( 2, 2 ); err = WSAStartup( wVersionRequested, &wsaData ); if ( err != 0 ) { return -1; } if ( LOBYTE( wsaData.wVersion ) != 2 || HIBYTE( wsaData.wVersion ) != 2 ) { WSACleanup( ); return -1; } // 创建socket SOCKET connect_socket; connect_socket = socket(AF_INET, SOCK_DGRAM, IPPROTO_UDP); if(INVALID_SOCKET == connect_socket) { err = WSAGetLastError(); printf("/""socket/"" error! error code is %d/n", err); return -1; } // 用来绑定套接字 SOCKADDR_IN sin; sin.sin_family = AF_INET; sin.sin_port = htons(3779); sin.sin_addr.s_addr = 0; // 用来从网络上的广播地址接收数据 SOCKADDR_IN sin_from; sin_from.sin_family = AF_INET; sin_from.sin_port = htons(3779); // 端口和服务端一致 sin_from.sin_addr.s_addr = INADDR_ANY; // 接收全部广播 //设置该套接字为广播类型, bool bOpt = true; setsockopt(connect_socket, SOL_SOCKET, SO_BROADCAST, (char*)&bOpt, sizeof(bOpt)); // 绑定套接字 err = bind(connect_socket, (SOCKADDR*)&sin, sizeof(SOCKADDR)); if(SOCKET_ERROR == err) { err = WSAGetLastError(); printf("/""bind/"" error! error code is %d/n", err); return -1; } int nAddrLen = sizeof(SOCKADDR); char buff[MAX_BUF_LEN] = ""; while(1) { // 接收数据 int nSendSize = recvfrom(connect_socket, buff, MAX_BUF_LEN, 0, (SOCKADDR*)&sin_from, &nAddrLen); if(SOCKET_ERROR == nSendSize) { err = WSAGetLastError(); printf("/""recvfrom/"" error! error code is %d/n", err); return -1; } buff[nSendSize] = '/0'; printf("Recv: %s/n", buff); } return 0;
}
相关文章:
devc++ 使用 winsock 实现 UDP 局域网 WIFI 广播
参考链接 使用UDP发送广播报_udp广播 inaddr_broadcast-CSDN博客 UDP接收端收不到广播的消息问题排查_unity upd广播连接不上是什么情况-CSDN博客 如何禁用自己电脑的虚拟网卡-百度经验 (baidu.com) 但是wifi 会屏蔽255.255.255.255 广播地址,所以 255.255.255.2…...
JS实现根据数组对象的某一属性排序
JS实现根据数组对象的某一属性排序 一、冒泡排序(先了解冒泡排序机制)二、根据数组对象的某一属性排序(引用sort方法排序) 一、冒泡排序(先了解冒泡排序机制) 以从小到大排序为例,冒泡排序的原…...
CSP-J 2023 复赛第2题:公路 ← 贪心算法
【题目来源】https://www.luogu.com.cn/problem/P9749https://www.acwing.com/problem/content/5311/【题目描述】 小苞准备开着车沿着公路自驾。 公路上一共有 n 个站点,编号为从 1 到 n。 其中站点 i 与站点 i1 的距离为 vi 公里。 公路上每个站点都可以加油&…...
【LeetCode打卡】Day23|669. 修剪二叉搜索树、108.将有序数组转换为二叉搜索树、538.把二叉搜索树转换为累加树
学习目标: 669. 修剪二叉搜索树 108.将有序数组转换为二叉搜索树 538.把二叉搜索树转换为累加树 学习内容: 669. 修剪二叉搜索树 题目链接&&文章讲解 给你二叉搜索树的根节点 root ,同时给定最小边界low 和最大边界 high。通过修剪…...
Transformer位置表示(Position Encoding)
为什么需要位置表示 对比CNN、RNN和Self-Attention: CNN处理相邻窗口的内容;RNN天然是序列操作,考虑了位置先后关系;Self-Attention的计算时是无序的,所以需要位置表示来知道Token之间的位置信息。 绝对位置表示 典型如…...
LPDDR6与LPDDR5 State Diagram技术探讨
相对于LPDDR5: 1)去掉DSM 2)idle到per-bank-refresh变成per-2-bank-refresh,LPDDR6下可自由组合任两个bank刷新,以提高性能 3)sref到进入command bus training后可MRR、MRW、CAS、MPC等命令 4)idle power down期间可MRR、MRW、CAS、MPC等命令 5)idle到进入command bus train…...
AliLinux的使用Docker初始化服务(详细)
AliLinux的使用Docker初始化服务(详细) AliLinux是基于CentOS的。 1、java 环境 2、mysql环境 3、kafka环境 4、flink环境 5、dinky环境 这些环境,本想直接dnf安装在宿主机上,思来想去,还是用docker方便学习&…...
docker环境常用容器安装
目录 1.安装partainer 2.安装myql 3.安装redis 4.安装Minio 5.安装zibkin 6.安装nacos 7.安装RabbitMq 8.安装RocketMq 8.1启动service 8.2修改对应配置 8.3启动broker 8.4启动控制台 9.安装sentinel 10.安装elasticsearch 11.安装Kibana 12.安装logstash/file…...
【论文阅读|基于 YOLO 的红外小目标检测的逆向范例】
基于 YOLO 的红外小目标检测的逆向范例 摘要1 引言2 相关工作2.1 逆向推理2.2 物体检测方法 3 方法3.1 总体架构3.2 逆向标准的可微分积分 4 实验4.1 数据集和指标4.2 实验环境4.4 OL-NFA 为少样本环境带来稳健性 5 结论 论文题目: A Contrario Paradigm for YOLO-b…...
【presto权威指南】常用操作
shell ./bin/launcher start ./bin/launcher status ./bin/launcher stop /home/work/presto/bin/presto --server hadoop2:8443 --catalog hive --schema defult --debug --user ‘sdfyypt_2_0_eywa_admin’ //指定用户 presto -f 可以指定执行sql文件 presto -execute 可以…...
Python程序员面试准备:八股文题目与解答思路
目录 描述一下Python中的列表推导式(List Comprehension)及其用法。 代码示例: 解答思路: 解释一下Python中的装饰器(Decorator)及其作用。 代码示例: 输出: 解答思路: 谈谈Python中的GIL(Global Interprete…...
如何系统地自学Python?
如何系统地自学Python? 如何系统地自学Python?1.了解编程基础2.学习Python基础语法3.学习Python库和框架4.练习编写代码5.参与开源项目6.加入Python社区7.利用资源学习8.制定学习计划9.持之以恒总结 如何系统地自学Python? 作为一个Python语…...
mysql 2-21
约束的分类 添加约束 查看表约束 非空约束 唯一性约束 复合的唯一性约束 只要有一个字段不重复,就可以添加成功 主键约束 自增列 mysql 8.0具有持久化,重启服务器会继续自增 外键约束 创建外键 关联必须有唯一性约束,或者是主键 约束等级 …...
【C#】List泛型数据集如何循环移动,最后一位移动到第一位,以此类推
欢迎来到《小5讲堂》 大家好,我是全栈小5。 这是《C#》系列文章,每篇文章将以博主理解的角度展开讲解, 特别是针对知识点的概念进行叙说,大部分文章将会对这些概念进行实际例子验证,以此达到加深对知识点的理解和掌握。…...
LeetCode23.合并K个升序链表
题目 给你一个链表数组,每个链表都已经按升序排列。 请你将所有链表合并到一个升序链表中,返回合并后的链表。 示例 : 输入:lists [[1,4,5],[1,3,4],[2,6]] 输出:[1,1,2,3,4,4,5,6] 解释:链表数组如下&…...
(01)Hive的相关概念——架构、数据存储、读写文件机制
目录 一、架构及组件介绍 1.1 Hive整体架构 1.2 Hive组件 1.3 Hive数据模型(Data Model) 1.3.1 Databases 1.3.2 Tables 1.3.3 Partitions 1.3.4 Buckets 二、Hive读写文件机制 2.1 SerDe 作用 2.2 Hive读写文件流程 2.2.1 读取文件的过程 …...
二维码扫码登录原理,其实比你想的要简单的多
二维码,大家再熟悉不过了 购物扫个码,吃饭扫个码,坐公交也扫个码 在扫码的过程中,大家可能会有疑问:这二维码安全吗? 会不会泄漏我的个人信息? 更深度的用户还会考虑:我的系统是不…...
Java 实现 Awaitable(多线程并行等待,类似 AutoEventReset 的作用)
AutoEventReset、ManualEventReset,是我们在多线程并行编程之中常常需要涉及的,但是 ManualEventReset 可能用的并没有那么多,这个多用于实现读写锁的,当然 Java 自己库提供了官方实现,就没必要自己去整了。 C/C 里面…...
AI之Sora:Sora(文本指令生成视频的里程碑模型)的简介(能力/安全性/技术细节)、使用方法、案例应用之详细攻略
AI之Sora:Sora(文本指令生成视频的里程碑模型)的简介(能力/安全性/技术细节)、使用方法、案例应用之详细攻略 导读:Sora 是OpenAI研发的一个可以根据文字描述生成视频的AI模型。它的主要特性、功能以及OpenAI在安全和应用方面的策略的核心要点如下所示&a…...
IListManger feeds流
目的:将feeds的分页加载和下拉刷新,与网络请求关联起来 ListLibRecyclerViewProxy 在this.getRecyclerView().addOnScrollListener中记录事件 recyclerView.computeVerticalScrollOffset() // 已经向下滚动的距离,为0时表示已处于顶部。 recyclerView.computeVerticalScro…...
经手100万+终端后,聊聊校园门锁Sub-1G和Cat.1怎么选
做校园联网门锁项目的人大概都遇到过这个纠结:组网方案到底选Sub-1G还是4G Cat.1?我们团队(KEENZY中科易安)经手了100万在线终端的运行数据,可以明确地说——两种方案没有绝对的优劣,只有场景是否匹配。选错…...
ElevenLabs芬兰语TTS部署踩坑实录(含CI/CD流水线集成模板):1次失败=2.3小时调试,我们帮你省下87%时间
更多请点击: https://kaifayun.com 第一章:ElevenLabs芬兰语TTS部署踩坑实录(含CI/CD流水线集成模板):1次失败2.3小时调试,我们帮你省下87%时间 核心痛点:芬兰语语音合成的隐性陷阱 ElevenLab…...
2026别错过!一键生成论文工具深度测评与推荐
2026年真正好用的一键生成论文工具,核心看生成的论文质量、低AI味、格式正确、学术适配四大指标。综合实测,千笔AI、ThouPen、豆包、DeepSeek、Grammarly 是当前最值得推荐的梯队,覆盖从免费到付费、从中文到英文、从文科到理工的全场景需求。…...
工业三防灯干货科普:核心参数、选型逻辑及应用场景全解析
在工业照明领域,三防灯是适配恶劣环境的核心照明设备,广泛应用于车间、仓库、隧道、冷链、食品加工等多场景。不同于民用照明灯具,工业级三防灯需具备防尘、防水、防腐蚀的核心能力,其性能直接决定照明稳定性、使用寿命及后期运维…...
裁员风暴:从大厂骨干到失业边缘
2024年的春天,我在一家头部互联网公司担任测试主管的第八个年头,一场突如其来的裁员风暴打破了看似安稳的生活。公司战略收缩,测试部门首当其冲,我和近三成同事被列入优化名单。看着熟悉的工位被迅速清空,手里的离职证…...
Cursor AI助手功能扩展技术实现:5步实现永久免费使用的完整方案
Cursor AI助手功能扩展技术实现:5步实现永久免费使用的完整方案 【免费下载链接】cursor-free-vip [Support 0.45](Multi Language 多语言)自动注册 Cursor Ai ,自动重置机器ID , 免费升级使用Pro 功能: Youve reached…...
鸿蒙PC中获取并使用DevEco Studio
鸿蒙PC中获取并使用DevEco Studio 一、前言 本文由 AtomCode 协助润色 随着鸿蒙生态的不断扩展,DevEco Studio 也推出了适配鸿蒙 PC 的预览版本。本文将详细介绍如何申请公测名额、下载安装 DevEco Studio,以及创建/导入项目并安装到鸿蒙设备。 前置条…...
别再死记硬背二进制转换了!用Python写个自动转换工具,顺便搞懂CPU是怎么算的
用Python打造二进制转换工具:从代码实践理解CPU运算本质 当我们在编程中遇到需要处理二进制数据时,是否曾对背后的计算机原理产生好奇?本文将通过构建一个Python数制转换工具,带你穿透代码表层,深入理解CPU如何处理二…...
YOLOv5实战:从Leaky ReLU到Sigmoid,手把手教你配置激活函数(附代码避坑)
YOLOv5激活函数工程实践:从源码修改到性能调优全指南 在目标检测领域,YOLOv5以其出色的平衡速度和精度成为工业界宠儿。但很多开发者在使用预训练模型时,往往忽略了激活函数配置这一关键环节——就像给跑车加错燃油标号,表面能跑…...
WanAndroid收藏系统设计:从UI交互到数据持久化的完整方案
WanAndroid收藏系统设计:从UI交互到数据持久化的完整方案 【免费下载链接】WanAndroid 🔥项目采用 Kotlin 语言,基于 MVP RxJava Retrofit Glide EventBus 等架构设计,努力打造一款优秀的 [玩Android] 客户端 项目地址: htt…...
