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…

MySQL中NULL值与空值的坑

1. 表达含义 在mysql中 空值&#xff1a;表示一个空字符或零长度的字符串&#xff0c;可以使用空引号 来表示&#xff0c;是已被定义的值&#xff1b; NULL值&#xff1a;NULL表示缺少一个已知或适当的值&#xff0c;是未被定义的值&#xff1b;。 2. 比较运算 空值&…

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><…

C++重温笔记(八): C++异常

1. 写在前面 c在线编译工具&#xff0c;可快速进行实验: https://www.bejson.com/runcode/cpp920/ 这段时间打算重新把c捡起来&#xff0c; 实习给我的一个体会就是算法工程师是去解决实际问题的&#xff0c;所以呢&#xff0c;不能被算法或者工程局限住&#xff0c;应时刻提…

复试 || 就业day09(2024.01.04)算法篇

文章目录 前言验证外星语词典在长度 2N 的数组中找出重复 N 次的元素找到小镇的法官查找共用字符数组的相对排序分发饼干分发糖果区间选点(AcWing)最大不相交区间数量(AcWing)无重叠区间关于重写小于号 前言 &#x1f4ab;你好&#xff0c;我是辰chen&#xff0c;本文旨在准备考…

国内SAP代理公司排行榜,哲讯为您选择最佳合作伙伴

SAP系统在企业数字化转型中的重要性日益凸显&#xff0c;越来越多的企业意识到了SAP的价值和潜力。然而&#xff0c;在选择合适的SAP代理公司方面&#xff0c;许多企业常常感到困惑。因此&#xff0c;本文将为您介绍国内SAP代理公司排行榜&#xff0c;为您提供参考和指导&#…

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

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

相机FOV是什么英文单词的缩写,是什么意思。

问题描述&#xff1a;相机FOV是什么英文单词的缩写&#xff0c;是什么意思。 问题解答&#xff1a; FOV 是 "Field of View" 的缩写&#xff0c;翻译成中文是视场角或视野。在相机领域&#xff0c;相机的 FOV 表示相机能够捕捉到的场景范围的大小&#xff0c;通常用…

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

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

通信管理之设备管理

点击标题栏 【系统】--【通信管理】 串口通信指串口按位&#xff08;bit)发送和接受字节。尽管比特字节的串行通信慢&#xff0c;但是串口可以在使用一根线发送数据的同时用另一根线接受数据&#xff0c;串口通信协议是指规定了数据包的内容&#xff0c;内容包含了起始位、主体…

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…

Python循环语句

for 循环 for循环主要用来实现固定次数的循环&#xff0c;用于将一段代码重复的执行固定次数。 比如&#xff1a;循环打印数字&#xff0c;打印1-100之间的每个整数 for i in range(100):print(i1)while 循环 while循环用于实现不知道要执行多少次的循环&#xff0c;一般需…

【hyperledger-fabric】部署和安装

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

PyTorch|transforms

在将图片输入到神经网络进行训练时&#xff0c;一般都需要对输入的图像进行预处理。对图片进行操作有很多种方法&#xff0c;这里我们使用torchvision库的transforms模块。 tansforms有很多种方法(一些可以用在张量和PIL图像&#xff0c;一些仅能用于张量&#xff0c;而另一些…

解密!电梯机房温差之谜

小伍&#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互转在线工具-开发者工具 可以用于不同数据库之间的…