UDP单播

CMakeLists.txt文件中添加如下行:

link_libraries(ws2_32)

1.发送端

#include <iostream>
#include <winsock2.h>
#include <cstdio>#pragma comment(lib, "Ws2_32.lib")  // Link with ws2_32.libint main() {1.Initialize winsockWSADATA wsaData;int iResult = WSAStartup(MAKEWORD(2, 2), &wsaData);if (iResult != NO_ERROR) {wprintf(L"WSAStartup failed with error: %d\n", iResult);return 1;}2.Create a socket for sending dataSOCKET SendSocket = socket(AF_INET, SOCK_DGRAM, IPPROTO_UDP);if (SendSocket == INVALID_SOCKET) {wprintf(L"socket failed with error: %1d\n", WSAGetLastError());WSACleanup();return 1;}3.Set up the RecvAddr structure with the IP address of the receiver (in this example case "192.168.1.1")and the specified port number.sockaddr_in RecvAddr = {0};unsigned short Port = 27015;RecvAddr.sin_family = AF_INET;RecvAddr.sin_port = htons(Port);RecvAddr.sin_addr.s_addr = inet_addr("127.0.0.1");4.Send a datagram to the receiverwprintf(L"Sending a datagram to the receiver...\n");char sendBuf[1024]="Hello";int BufLen = 1024;iResult = sendto(SendSocket, sendBuf, BufLen, 0, reinterpret_cast<SOCKADDR *>(&RecvAddr), sizeof(RecvAddr));if (iResult == SOCKET_ERROR) {wprintf(L"sendto failed with error: %d\n", WSAGetLastError());closesocket(SendSocket);WSACleanup();return 1;}5.When the application is finished sending, close the socket.wprintf(L"Finished sending. Closing socket. \n");iResult = closesocket(SendSocket);if (iResult == SOCKET_ERROR) {wprintf(L"closesocket failed with error: %d\n", WSAGetLastError());WSACleanup();return 1;}6.Clean up and quit.wprintf(L" Exiting.\n");WSACleanup();return 0;
}

2.接收端代码

#include <iostream>
#include <winsock2.h>
#include <cstdio>#pragma comment(lib, "Ws2_32.lib")  // Link with ws2_32.libint main() {1.Initialize winsockWSADATA wsaData;int iResult = WSAStartup(MAKEWORD(2, 2), &wsaData);if (iResult != NO_ERROR) {wprintf(L"WSAStartup failed with error: %d\n", iResult);return 1;}2.Create a receiver socket to receive datagramsSOCKET RecvSocket = socket(AF_INET, SOCK_DGRAM, IPPROTO_UDP);if (RecvSocket == INVALID_SOCKET) {wprintf(L"socket failed with error: %1d\n", WSAGetLastError());return 1;}3.Bind the socket to any address and the specified port.sockaddr_in RecvAddr = {0};unsigned short Port = 27015;RecvAddr.sin_family = AF_INET;RecvAddr.sin_port = htons(Port);RecvAddr.sin_addr.s_addr = htonl(INADDR_ANY);iResult=bind(RecvSocket,reinterpret_cast<SOCKADDR*>(&RecvAddr), sizeof(RecvAddr));if (iResult != 0) {wprintf(L"bind failed with error: %d\n", WSAGetLastError());return 1;}4.Call the recvfrom function to receive datagrams on the bound socket.wprintf(L"Receiving datagrams...\n");char RecvBuf[1024];int RecvAddrSize=sizeof(RecvAddr);iResult = recvfrom(RecvSocket, RecvBuf, sizeof(RecvBuf), 0, reinterpret_cast<SOCKADDR *>(&RecvAddr), &RecvAddrSize);if (iResult == SOCKET_ERROR) {wprintf(L"recvfrom failed with error: %d\n", WSAGetLastError());} else{printf("%s\n",RecvBuf);}5.Close the socket when finished receiving datagramswprintf(L"Finished receiving. Closing socket. \n");iResult = closesocket(RecvSocket);if (iResult == SOCKET_ERROR) {wprintf(L"closesocket failed with error: %d\n", WSAGetLastError());WSACleanup();return 1;}6.Clean up and quit.wprintf(L" Exiting.\n");WSACleanup();return 0;
}

执行结果:

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

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

相关文章

JS 手写 new 函数

工作中我们经常会用到 new 关键字&#xff0c;new 一个构造函数生成一个实例对象&#xff0c;那么new的过程中发生了什么呢&#xff0c;我们今天梳理下 创建一个对象对象原型继承绑定函数this返回对象 先创建一个构造函数&#xff0c;原型上添加一个方法 let Foo function (n…

03、Kafka ------ CMAK(Kafka 图形界面管理工具) 下载、安装、启动

目录 CMAK&#xff08;Kafka 图形界面管理工具&#xff09;下载安装启动打开 cmak 图形界面 CMAK&#xff08;Kafka 图形界面管理工具&#xff09; Kafka本身并没有提供Web管理工具&#xff0c;而是推荐使用bin目录下各种工具命令来管理Kafka&#xff0c; 这些工具命令其实用起…

vue3中标签form插件

想写一个系统&#xff0c;对八字进行标注&#xff0c;比如格局&#xff0c;有些八字就有很多格局&#xff0c;于是就想着使用el-tag但是&#xff0c;form表单中如何处理呢&#xff1f; 这个时候&#xff0c;就需要自己写一个,modelValue是表单的默认属性 <template><…

以 Serverfull 方式运行无服务器服务

当前 IT 架构中最流行的用例是从 Serverfull 转向 Serverless 设计。在某些情况下&#xff0c;我们可能需要以 Serverfull 方式设计服务或迁移到 Serverfull 作为运营成本的一部分。 在本文中&#xff0c;我们将展示如何将 Kumologica flow 作为 Docker 容器运行。通常&#x…

HarmonyOS页面和自定义组件生命周期

页面和自定义组件生命周期 在开始之前&#xff0c;我们先明确自定义组件和页面的关系&#xff1a; 自定义组件&#xff1a;Component装饰的UI单元&#xff0c;可以组合多个系统组件实现UI的复用。页面&#xff1a;即应用的UI页面。可以由一个或者多个自定义组件组成&#xff…

52、全连接 - 特征与样本空间的对应关系

上一节说到经过全连接层之后,神经网络学习到的特征,会从隐层特征空间逐步映射到样本空间,这主要是由于全连接层可以融合全局的特征。 在经过全连接层之后,在 ResNet50 这个神经网络中会输出1000个特征的得分值,这1000个特征的得分值,便可以对应到图像的分类。 怎么对应…

居然在Web上就可以体验下苹果电脑的操作系统啦?

发现一款宝藏项目 MacOS &#xff0c;在Web上打造一款原汁原味的 MacOS系统&#xff0c;不同于以外的仿操作系统的web应用&#xff0c;该应用底层基于 HTML5的 FileSystem 和 IndexedDB 构建了文件系统&#xff0c;理论上可以基于这套系统实现任何的上层应用。作者还制定了可以…

洛谷P1024[NOIP2001 提高组] 一元三次方程求解(cpp)(二分查找)

目录 1.题目 2.思路 3.AC 1.题目 # [NOIP2001 提高组] 一元三次方程求解 ## 题目描述 有形如&#xff1a; 这样的一个一元三次方程。给出该方程中各项的系数&#xff08;a,b,c,d 均为实数&#xff09;&#xff0c;并约定该方程存在三个不同实根&#xff08;根的范围在 -…

【JavaEE进阶】 关于Spring mvc 响应

文章目录 &#x1f38d;序言&#x1f333; 返回静态⻚⾯&#x1f332;RestController 与 Controller 的关联和区别&#x1f334;返回数据 ResponseBody&#x1f38b;返回HTML代码⽚段&#x1f343;返回JSON&#x1f340;设置状态码&#x1f384;设置Header&#x1f6a9;设置Con…

【hyperledger-fabric】部署和安装

简介 对hyperledger-fabric进行安装&#xff0c;话不多说&#xff0c;直接开干。但是需要申明一点&#xff0c;也就是本文章全程是开着加速器进行的资源操作&#xff0c;所以对于没有开加速器的情况可能会由于网络原因导致下载资源失败。 资料提供 1.官方部署文档在此&#…

解密!电梯机房温差之谜

小伍&#xff1a;大家好&#xff0c;本次小伍带大家来到【电梯机房】&#xff0c;我们来先测一下温度 电梯机房【外屋】&#xff1a;23.2 度 小伍&#xff1a;好&#xff0c;我们再看里面的设备温度 电梯机房【外里】&#xff1a;74 度 523能源&#xff1a;哇塞&#xff0c;…

写了个在线 SQL 转换工具,支持 Oracle、Mysql、SQLServer 语句互转。

原本用户公司要迁移 oracle 到 mysql 上&#xff0c;数据库方言上有一定的区别&#xff0c;老的 SQL 又臭又长转起来也不太方便&#xff0c;尤其是日期类的完全无法适用&#xff0c;所以才写了这个工具&#xff1a;不同类型sql互转在线工具-开发者工具 可以用于不同数据库之间的…

XML解析神器:Apache Commons Digester

第1章&#xff1a;引言 大家好&#xff0c;我是小黑。今天咱们聊聊一个在现代编程中经常遇到的话题&#xff1a;XML解析。你可能知道&#xff0c;XML&#xff08;可扩展标记语言&#xff09;因其灵活性和可读性&#xff0c;在配置文件、数据交换等方面广泛使用。但是&#xff…

第一节 初始化项目

系列文章目录 第一节 初始化项目 文章目录 操作步骤 总结 操作步骤 打开cmd 输入 vue ui 在打开的网页中点击“创建”&#xff0c;复制文件夹路径并粘贴点击“在此创建新项目” 输入项目名称 点击下一步选择手动配置 选择babel、router、vuex、css pre-processors、 linter建…

(Linux)虚拟机配置固定IP

Linux操作系统的IP地址是通过DHCP服务获取的&#xff0c;也就是动态获取IP地址&#xff0c;每次重启设备后都会获取一次&#xff0c;会导致IP地址频繁变更&#xff0c;为了不频繁更新映射关系&#xff0c;我们需要IP地址固定下来。 1.在VM中配置IP地址网关和网段 打开虚拟网络…

【程序】USART串口通信接收数据(标准库带printf)

&#x1f31f;博主领域&#xff1a;嵌入式领域&人工智能&软件开发 前言&#xff1a;本程序使用stm32f429作为主控&#xff0c;使用串口1&#xff0c;使用的是标准库程序版本。&#xff08;其它主控/串口x&#xff0c;实现过程类似&#xff09;。本程序亲测无误。 目录…

HubSpot集成怎么样?有哪些优势和特点?

HubSpot在集成方面表现出色&#xff0c;并为用户提供了强大的集成能力。以下是HubSpot集成的一些特点和优势&#xff1a; 1.丰富的集成生态系统&#xff1a; HubSpot拥有丰富的应用市场&#xff0c;用户可以轻松访问并集成多种第三方应用。这包括与营销、销售、客户服务等领域…

Vue 单文件组件的基础入门指南

本文是我2年前做的一个学习小demo&#xff0c;在这里分享一下 希望对想要学习Vue的小伙伴能有一丢丢的小帮助~_~ 1 Vue CLI Vue CLI (opens new window)是一个基于Vue.js进行快速开发的完整系统。 这里我使用 Vue CLI 生成了一个Vue项目&#xff0c;命令为&#xff1a;vue cr…

算法导论复习——CHP16 贪心算法

定义 每一步都做出当前看来最优的操作。 问题引入——活动选择问题 问题描述 活动选择问题就是对给定的包含n个活动的集合S&#xff0c;在已知每个活动开始时间和结束时间的条件下&#xff0c;从中选出最多可兼容活动的子集合&#xff0c;称为最大兼容活动集合。 不失一般性&a…

解析《个人信息保护法》实施以来主要的变化

文章目录 前言一、二十一部配套的立法二、数据入表三、跨境规则转向四、未成年个人信息保护五、数据交易六、监管创新七、执法全覆盖八、地方聚焦场景执法九、个人信息保护诉讼十、个人信息保护公益诉讼十一、包容审慎十二、双清单上线十三、外部独立监督机构十四、个性化推荐便…