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.rhkb.cn/news/230811.html

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

相关文章

全网独家:基于openeuler-20.03-lts底包构建opengauss数据库V5.0.1LTS的单机容器

近期想测试一下opengauss数据库,官网上单机容器部署只有x86-64平台CentOS 7.6和ARM64平台 openEuler20.03 LTS两种底包方案。本文系全网独家在x86平台上基于openeuler-20.03-lts底包构建opengauss数据库V5.0.1LTS的单机容器。 opengauss官网上单机容器部署只有x86-64平台Cent…

按摩上门预约小程序源码系统 开发组合:PHP+MySQL 附带完整的搭建教程

现代生活节奏的加快&#xff0c;人们越来越注重健康与放松。按摩作为传统的舒缓方式&#xff0c;市场需求逐年上升。然而&#xff0c;传统的按摩服务预约方式较为繁琐&#xff0c;用户需拨打热线电话或前往实体店进行预约&#xff0c;这无疑增加了用户的操作成本。因此&#xf…

C#的checked关键字判断是否溢出

目录 一、定义 二、示例&#xff1a; 三、生成&#xff1a; 一、定义 使用checked关键字处理溢出。 在进行数学运算时&#xff0c;由于变量类型不同&#xff0c;数值的值域也有所不同。如果变量中的数值超出了变量的值域&#xff0c;则会出现溢出情况&#xff0c;出现溢出…

【ModelScope】从入门到进阶

计算机视觉任务 任务&#xff08;Task&#xff09;中文任务&#xff08;Task&#xff09;英文任务说明单标签图像分类image-classification对图像中的不同特征根据类别进行区分通用图像分割image-segmentation识别图像主体与图像背景进行分离文字检测ocr-detection将图像中的文…

03-微服务-Ribbon负载均衡

Ribbon负载均衡 1.1.负载均衡原理 SpringCloud底层其实是利用了一个名为Ribbon的组件&#xff0c;来实现负载均衡功能的。 那么我们发出的请求明明是http://userservice/user/1&#xff0c;怎么变成了http://localhost:8081的呢&#xff1f; 1.2.源码跟踪 为什么我们只输入…

汉诺塔问题(递归超详细)C++,leetcode

文章目录 前言一、题目分析二、算法原理1.为什么要用递归2.如何编写代码 三、代码实现总结 前言 在本文章中&#xff0c;我们将要详细介绍一下汉诺塔问题&#xff0c;本题目我们采用递归的方式解决相关的内容 一、题目分析 题目要求详解&#xff1a;   &#x1f31f; 有三个…

css原子化的框架Tailwindcss的使用教程(原始html和vue项目的安装与配置)

安装教程 中文官网教程 原始的HTML里面使用 新建文件夹npm init -y 初始化项目 安装相关依赖 npm install -D tailwindcss postcss-cli autoprefixer初始化两个文件 npx tailwindcss init -p根目录下新建src/style.css tailwind base; tailwind components; tailwind ut…

【python入门】day12:bug及其处理思路

bug的常见类型 粗心 / 没有好习惯 思路不清 lst[{rating:[9.7,2062397],id:1292052,type:[犯罪,剧情],title:肖申克的救赎,actors:[蒂姆罗宾斯,摩根弗里曼]},{rating:[9.6,1528760],id:1291546,type:[剧情,爱情,同性],title:霸王别姬,actors:[张国荣 ,张丰毅 , 巩俐 ,葛优]},{r…

卷麻了,00后测试用例写的比我还好,简直无地自容...........

经常看到无论是刚入职场的新人&#xff0c;还是工作了一段时间的老人&#xff0c;都会对编写测试用例感到困扰&#xff1f;例如&#xff1a; 如何编写测试用例&#xff1f; 作为一个测试新人&#xff0c;刚开始接触测试&#xff0c;对于怎么写测试用例很是头疼&#xff0c;无法…

linux性能优化

文章目录 性能优化图CPU进程和cpu原理性能指标 性能优化图 CPU 进程和cpu原理 进程与线程&#xff1a; 进程是程序的执行实例&#xff0c;有自己的地址空间和系统资源。线程是进程内的执行单元&#xff0c;共享进程的资源。在多核系统中&#xff0c;使用多线程可以更好地利用多…

Web 自动化测试过程中会遇到哪些问题?

作者&#xff1a;木可 链接&#xff1a;https://www.zhihu.com/question/636965892/answer/3341410674 来源&#xff1a;知乎 著作权归作者所有。商业转载请联系作者获得授权&#xff0c;非商业转载请注明出处。 Web自动化是指使用测试脚本来自动执行网页上的任务。这包括填…

mybatis快速批量插入工具类

代码示例&#xff1a; package com.ly.cloud.util; import java.util.List;import javax.annotation.PostConstruct; import javax.annotation.Resource;import com.google.common.collect.Lists; import org.apache.ibatis.session.ExecutorType; import org.apache.ibatis.s…

Linux Debian12安装和使用ImageMagick图像处理工具 常见图片png、jpg格式转webp格式

一、ImageMagick简介 ImageMagick是一套功能强大、稳定而且免费的工具集和开发包。可以用来读、写和图像格式转换&#xff0c;可以处理超过100种图像格式&#xff0c;包括流行的TIFF, JPEG, GIF, PNG, PDF以及PhotoCD等格式。对图片的操作&#xff0c;即可以通过命令行进行&am…

派可数据BI 助力生产企业数字化质量管理,全面提升产品品质

在制造业中&#xff0c;出了质量问题&#xff0c;生产和质检部的同事都先抱怨。大家觉得质量问题是品控部门的问题&#xff0c;生产质量有瑕疵&#xff0c;检验人员就要负责。而检验人员又觉得&#xff0c;品质是生产出来的&#xff0c;而不是检验出来的&#xff0c;只有在生产…

服务器为什么大多用 Linux?

服务器为什么大多用 Linux&#xff1f; 在开始前我有一些资料&#xff0c;是我根据自己从业十年经验&#xff0c;熬夜搞了几个通宵&#xff0c;精心整理了一份「Linux的资料从专业入门到高级教程工具包」&#xff0c;点个关注&#xff0c;全部无偿共享给大家&#xff01;&#…

1.3 金融数据可视化

跳转到根目录&#xff1a;知行合一&#xff1a;投资篇 已完成&#xff1a; 1.1 编程基础   1.1.1 投资-编程基础-numpy   1.1.2 投资-编程基础-pandas 1.2 金融数据处理 1.3 金融数据可视化 文章目录 1. 金融数据可视化1.1. matplotlib1.1.1. 沪深300走势图1.1.2. 日线均线…

计算机网络-动态路由

网络层协议&#xff1a;ip&#xff0c;ospf&#xff0c;rip&#xff0c;icmp共同组成网络层体系 ospf用于自治系统内部。 一个路由器或者网关需要能够支持多个不同的路由协议&#xff0c;以适应不同的网络环境。特别是在连接不同自治系统的边缘路由器或边界网关的情况下&#…

Qt之自定义分页(翻页)控件

当数据量较大时,分页显示是个不错的选择。这里用百家姓来演示分页效果,包括首页、上一页、下一页、尾页和跳转。 一.效果 每页15个姓氏。 二.实现 QHPageWidget.h #ifndef QHPAGEWIDGET_H #define QHPAGEWIDGET_H#include <QWidget> #include <QStandardItemMod…

Docker安装Elasticsearch,kibana,ik分词器

安装elasticsearch 下载elasticsearch&#xff0c;查看版本&#xff1a;Elasticsearch Guide [8.11] | Elastic docker pull elasticsearch:7.17.16 查看镜像是否下载成功 docker images 创建网络&#xff0c;因为需要部署kibana容器&#xff0c;要让es和kibana容器互联 …

Linuk安装Prometheus+grafana监控

Linuk安装Prometheusgrafana监控 文章目录 Linuk安装Prometheusgrafana监控服务器环境配置1.prometheus监控框架工具介绍2.Prometheus 源码安装和启动配置2.1 下载2.2安装2.3默认prometheus.yml 配置解释2.4直接启动服务2.5 访问http://localhost:90902.6将Prometheus配置为系统…