C# UDP

UDP是一个无连接协议,传输数据之前源端和终端不建立连接,当它想传送时就简单地去抓取来自应用程序的数据,并尽可能快地把它扔到网络上。在发送端,UDP传送数据的速度仅仅是受应用程序生成数据的速度、计算机的能力和传输带宽的限制;在接收端,UDP把每个消息段放在队列中,应用程序每次从队列中读一个消息段。
由于传输数据不建立连接,因此也就不需要维护连接状态,包括收发状态等,因此一台服务机可同时向多个客户机传输相同的消息。这样就极大地减少了系统开销,降低了流媒体的误码率和丢包率,并保证了流媒体播放的平滑性

Udp服务端

internal class Program{static void Main(string[] args){// 初始化服务器端本身ip以及端口UdpClient udpListener = new UdpClient(new IPEndPoint(IPAddress.Parse("127.0.0.1"), 1234));// 客户端的ip以及端口IPEndPoint remoteEndPoint = new IPEndPoint(IPAddress.Parse("127.0.0.1"), 1235);// 发送数据byte[] data;//udpListener.Send(data, data.Length, remoteEndPoint);//  发送消息var taskA = Task.Run(() =>{while (true){try{string readStr = Console.ReadLine();if (!string.IsNullOrWhiteSpace(readStr) && readStr.StartsWith("W:")){data = Encoding.UTF8.GetBytes(readStr.Substring(2));udpListener.Send(data, data.Length, remoteEndPoint);}}catch (Exception ex){return;}}});// 接收消息var taskB = Task.Run(() =>{while (true){// 接收数据byte[] receivedData = udpListener.Receive(ref remoteEndPoint);string receivedMessage = Encoding.UTF8.GetString(receivedData);Console.WriteLine($"Received: {receivedMessage}");}});// 主线程等待任务Task.WaitAll(taskA, taskB);}}

客户端

internal class Program{static void Main(string[] args){// 客户端自身端口System.Net.Sockets.UdpClient udpClient = new System.Net.Sockets.UdpClient(new IPEndPoint(IPAddress.Parse("127.0.0.1"), 1235));// 这是服务器ip以及端口IPEndPoint serverEndPoint = new IPEndPoint(IPAddress.Parse("127.0.0.1"), 1234);// 发送消息var taskA = Task.Run(() => {while (true){string readStr = Console.ReadLine();if(!string.IsNullOrWhiteSpace(readStr) && readStr.StartsWith("W:")){byte[] data = Encoding.UTF8.GetBytes(readStr.Substring(2));udpClient.Send(data, data.Length, serverEndPoint);}}});// 接收消息var taskB = Task.Run(() => {while(true){byte[] receivedData = udpClient.Receive(ref serverEndPoint);string receivedMessage = Encoding.UTF8.GetString(receivedData);Console.WriteLine($"Received: {receivedMessage}");}});Task.WaitAll(taskA,taskB);}}

在这里插入图片描述

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

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

相关文章

【数据安全】金融行业数据安全保障措施汇总

数字化的今天,数据的价值不可估量,尤其是金融行业,数据不仅代表着企业的核心资产,还涉及到客户的隐私和信任。因此对于金融行业而言,保障数据安全至关重要。下面我们就来一起讨论为什么金融行业要保障数据安全&#xf…

Android渲染-AHardwareBuffer

本文主要从应用的角度介绍android的native层AHardwareBuffer创建纹理以及保存渲染数据。 HardwareBuffer 要介绍native层的AHardwareBuffer,就需要先从Java层的HardwareBuffer说起。Android官方对于HardwareBuffer介绍如下: HardwareBuffer wraps a na…

Java预科知识

以下内容是根据狂神的Java说、chatgpt和csdn相关博客,结合自己的理解完成的。 Java了解 基于Java 开发了巨多的平台,系统,工具 构建工具: Ant, Maven, Jekins应用服务器:Tomcat, Jetty, Jboss, Websphere, weblogic…

dell r720远程网络安装ubuntu20.04(无U盘)

登陆后界面,在主界面上,我们就可以看到各个硬件组件的状态。在快速启动任务栏中,可以对系统电源进行操作,如开机、关机等。安装操作系统,在虚拟控制台预览处点击>启动 按照浏览器出现的提示确定安装控件等&#x…

软件设计师——数据结构(一)

📑前言 本文主要是【数据结构】——软件设计师——数据结构的文章,如果有什么需要改进的地方还请大佬指出⛺️ 🎬作者简介:大家好,我是听风与他🥇 ☁️博客首页:CSDN主页听风与他 &#x1f304…

running小程序重要技术流程文档

一、项目文件说明: (注:getMyMoney无用已删除) 二、重要文件介绍 1.reinfo.js:位于utils文件下,该文件封装有统一的请求URL,和请求API同意封装供页面调用;调用时候需要在页面上先…

unittest与pytest的区别

Unittest vs Pytest 主要从用例编写规则、用例的前置和后置、参数化、断言、用例执行、失败重运行和报告这几个方面比较unittest和pytest的区别: 用例编写规则 用例前置与后置条件 断言 测试报告 失败重跑机制 参数化 用例分类执行 如果不好看,可以看下面表格&…

算能 MilkV Duo开发板实战——opencv-mobile (迷你版opencv库)的移植和应用

前言 OpenCV是一种开源的计算机视觉和机器学习软件库,旨在提供一组通用的计算机视觉工具。它用于图像处理、目标识别、人脸识别、机器学习等领域,广泛应用于计算机视觉任务。 OpenCV-Mobile是OpenCV库的轻量版本,专为移动平台(A…

[MySQL] SQL优化之性能分析

🌈键盘敲烂,年薪30万🌈 目录 一、索引优化 1、索引是什么: 2、索引的数据结构: 3、索引种类: 4、sql分析(回表查询) 二、定位慢查询语句 1、慢查询日志 2、profile详情 3、…

洛谷P3807 Lucas定理

传送门: P3807 【模板】卢卡斯定理/Lucas 定理 - 洛谷 | 计算机科学教育新生态 (luogu.com.cn)https://www.luogu.com.cn/problem/P3807题干: 给定整数n,m,p 的值,求出C(nm,n)​mod p 的值。 输入数据保证…

案例027:基于微信小程序的校园二手平台的设计与实现

文末获取源码 开发语言:Java 框架:SSM JDK版本:JDK1.8 数据库:mysql 5.7 开发软件:eclipse/myeclipse/idea Maven包:Maven3.5.4 小程序框架:uniapp 小程序开发软件:HBuilder X 小程序…

SAP UI5 walkthrough step3 Controls

在上一步&#xff0c;我们是直接用index.html 中的body 里面的DIVision去输出 hello world&#xff0c; 在这个章节&#xff0c;我们将用SAP UI5 的标准控件 sap/m/Text 首先&#xff0c;我们去修改 webapp/index.html <!DOCTYPE html> <html> <head><…

Pytorch深度强化学习1-6:详解时序差分强化学习(SARSA、Q-Learning算法)

目录 0 专栏介绍1 时序差分强化学习2 策略评估原理3 策略改进原理3.1 SARSA算法3.2 Q-Learning算法 0 专栏介绍 本专栏重点介绍强化学习技术的数学原理&#xff0c;并且采用Pytorch框架对常见的强化学习算法、案例进行实现&#xff0c;帮助读者理解并快速上手开发。同时&#…

【论文极速读】LVM,视觉大模型的GPT时刻?

【论文极速读】LVM&#xff0c;视觉大模型的GPT时刻&#xff1f; FesianXu 20231210 at Baidu Search Team 前言 这一周&#xff0c;LVM在arxiv上刚挂出不久&#xff0c;就被众多自媒体宣传为『视觉大模型的GPT时刻』&#xff0c;笔者抱着强烈的好奇心&#xff0c;在繁忙工作之…

class073 背包dp-01背包、有依赖的背包【算法】

class073 背包dp-01背包、有依赖的背包【算法】 算法讲解073【必备】背包dp-01背包、有依赖的背包 code1 P1048 [NOIP2005 普及组] 采药 // 01背包(模版) // 给定一个正数t&#xff0c;表示背包的容量 // 有m个货物&#xff0c;每个货物可以选择一次 // 每个货物有自己的体积…

ChatGPT 应用开发(一)ChatGPT OpenAI API 免代理调用方式(通过 Cloudflare 的 AI Gateway)

前言 开发 ChatGPT 应用&#xff0c;我觉得最前置的点就是能使用 ChatGPT API 接口。首先我自己要能成功访问&#xff0c;这没问题&#xff0c;会魔法就可以本地调用。 那用户如何调用到我的应用 API 呢&#xff0c;我的理解是通过用户能访问到的中转服务器向 OpenAI 发起访问…

带阻滤波器:原理、应用及性能分析?|深圳比创达电子EMC

在现代电子技术和通信领域中&#xff0c;滤波器是一种常见的电路元件&#xff0c;用于处理信号&#xff0c;去除不需要的频率成分或者增强感兴趣的频率成分。本文将重点探讨带阻滤波器&#xff0c;它是一种特殊类型的滤波器&#xff0c;具有在特定频率范围内抑制信号的功能。我…

JVM Optimization Learning(五)

目录 一、JVM Optimization 1、G1 1、G1内存模型 2、基础概念 3、G1特点&#xff1a; 4、CMS日志分析 5、G1日志分析 2、GC参数 2.1、GC常用参数 2.2、Parallel常用参数 2.3、CMS常用参数 2.4、G1常用参数 一、JVM Optimization 1、G1 G1官网说明&#xff1a;Gar…

【微软技术栈】发布自己造的轮子 -- 创建Nuget包(分布操作)

目录 1、您的项目 2、创建 .nuspec 文件 3、一张图片胜过一千个拉取请求 4、包括自述文件 MD 文件 5、构建软件包 6、将包部署到 Nuget.Org 7、手动上传软件包 8、自动化和脚本化部署 9、我们如何构建和部署 ErrLog.IO Nuget 包 10、Nuget统计数据 11、最后的思考 创建 Nuget 包…

生产上线需要注意的安全漏洞

一、关闭swagger 1、关闭swagger v3 # 需同时设置auto-startupfalse&#xff0c;否则/v3/api-docs等接口仍能继续访问 springfox:documentation:enabled: falseauto-startup: falseswagger-ui:enabled: false 2、关闭swagger v2 # 只要不是true就不启用 swagger:enable: fa…