C# 运用UDP

article/2025/9/22 16:14:37

面试的时候偶尔会问到UDP和TCP的一个区别。
TCP是一种面向连接的、可靠的、基于字节流的传输层通信协议。举例:打电话,需要双方都接通,才能进行对话。特点:效率低,数据传输比较安全。
UDP是一种面向无连接的传输层通信协议。举例:发短信,不需要双方建立连接,但是,数据报的大小应限制在64k以内。特点:效率高,数据传输不安全,容易丢包

然后发现在网上查找关于C#运行UDP的实例,确实不好找,杂乱无章。痛定思痛!
进行一个简单的发送和接收测试。
目前,UDP本人亲自用过的场景,客户端和服务端需要进行数据传输,但是服务端,在开始时是连接的别的网络,切换过来之后,并不能知道当前的一个具体的IP地址。但是客户端的IP地址是固定的,此种场景下,服务端网络切换过来之后,建立UDP服务端,像指定的客户端(IP地址和端口号)发送数据,即可知道当前服务端的ip地址。

服务端界面
在这里插入图片描述

 using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Net;
using System.Net.Sockets;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;namespace MyTest.UDP
{public partial class UDP_Sever : Form{IPEndPoint remotePoint;UdpClient sever = null;public UDP_Sever(){InitializeComponent();}private void button1_Click(object sender, EventArgs e){IPAddress remoteIP = IPAddress.Parse(textBox1.Text.Trim()); //假设发送给这个IPint remotePort =int.Parse(textBox2.Text.Trim());remotePoint = new IPEndPoint(remoteIP, remotePort);//实例化一个远程端点sever = new UdpClient();}private void button2_Click(object sender, EventArgs e){if (!string.IsNullOrWhiteSpace(textBox3.Text.Trim())){string sendString = textBox3.Text.Trim();//要发送的字符串byte[] sendData = Encoding.Default.GetBytes(sendString);//要发送的字节数组sever.Send(sendData, sendData.Length, remotePoint);//将数据发送到远程端点textBox3.Text = "";}}private void UDP_Sever_FormClosing(object sender, FormClosingEventArgs e){sever.Close();}}
}

客户端界面
在这里插入图片描述

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Net;
using System.Net.Sockets;
using System.Text;
using System.Threading;
using System.Threading.Tasks;
using System.Windows.Forms;namespace MyTest.UDP
{public partial class UDP_Client : Form{UdpClient client = null;IPEndPoint remotePoint;string receiveString = null;byte[] receiveData = null;public UDP_Client(){InitializeComponent();CheckForIllegalCrossThreadCalls = false;}private void button1_Click(object sender, EventArgs e){         //实例化一个远程端点,IP和端口可以随意指定,等调用client.Receive(ref remotePoint)时会将该端点改成真正发送端端点remotePoint = new IPEndPoint(IPAddress.Any, 0);client = new UdpClient(int.Parse(textBox2.Text.Trim()));Thread thread = new Thread(Revice);thread.IsBackground = true;thread.Start();}private void Revice(){while (true){             receiveData = client.Receive(ref remotePoint);//接收数据receiveString = Encoding.Default.GetString(receiveData);listBox1.Items.Add(remotePoint.Address.ToString()+":"+ receiveString);               }}}
}

亲测有效!

参考链接:https://www.cnblogs.com/longzhankunlun/p/6251436.html?utm_source=itdadao&utm_medium=referral


http://chatgpt.dhexx.cn/article/GkfWVRV7.shtml

相关文章

UDP封装

大家好呀,我是请假君,今天又来和大家一起学习数通了,今天要分享的知识是UDP封装。 RFC 768定义的UDP (User Datagram Protocol,用户数据报协议)以IP为下层协议。UDP是为实现数据报(Datagram〉模式的分组交换计算机网络通信而设计的…

传输层的UDP

文章目录 一、UDP的概念及前置知识储备1. UDP基本概念2. OSI协议模型中的传输单位3. 端口3.1 端口号范围划分3.2 认识知名端口号(Well-Know Port Number)2.3 关于端口号的两个小疑问 二、UDP协议1. UDP协议端格式1.1 UDP16位校验和的具体使用1.1.1 发送方1.1.2 接收方 2. 基本特…

UDP组播

UDP组播 UDP(UserDatagram Protocol) 中文名用户数据报协议,是OSI参考模型中一种无连接的传输层协议,是一种高效但不可靠传输。UDP在IP报文中的协议号是17。 UDP传递方式 UDP有三种传输方式:单播、广播、多播。 1.单…

UDP通信

目录 1.什么是UDP通信 1.扔韭菜例子: 2.总结: 2.UDP通信:多发多收 UDP的三种通信方式: 3.UDP如何实现广播 4.UDP如何实现组播 1.什么是UDP通信 UDP是一种无连接、不可靠传输的协议。 将数据源IP、目的地IP和端口以及数据封…

UDP

概述 用户数据保协议(User Datagram Protocol,UDP)是开放系统互联模型(Open System Interconnection,OSI)中传输层协议的一种,是一种保留消息边界的简单的面向数据报的协议。UDP不提供差错纠正、…

TCP和UDP详解(非常详细)

文章目录 UDPUDP协议报文格式:UDP协议的特点:UDP的缓冲区:UDP存在接收缓冲区,但不存在发送缓冲区。 TCPTCP协议报文格式:确认应答机制:超时重传:超时重发的时间应该如何确定? 连接管理机制TIME_WAIT状态为什…

VS2008安装错误,解决方案

重新整了一下电脑,再次安装VS2008,以前安装很顺利,没想到这次安装却是失败了,各种错误,一路安装失败,再谷歌安装,最后终于安装成功,记下来,呵呵! 刚开始安装…

VS 2008的64位编译环境的安装和使用

分享一下我老师大神的人工智能教程!零基础,通俗易懂!http://blog.csdn.net/jiangjunshow 也欢迎大家转载本篇文章。分享知识,造福人民,实现我们中华民族伟大复兴! 作者:朱金灿 来源:http://blog.csdn.net/clever101 1. 安装64位编译环境 最近准备…

win7+VS2008安装boost

找了好久boost的安装教程,杂七杂八的方法有很多,说直接下载boost安装包installer,但是boostpro.com貌似挂了...所以最后还是得自己上阵,重新编译,方法综合了几个,最后终于搞定了(某些细节部分也…

VS2008安装Mercurial插件

(1)安装Mercurial或TortoiseHg. 从官网下载Mercurial或包含GUI的TortoiseHg。 (2)安装VS插件HgSccPackage。 下载VS插件HgSccPackage并安装,该插件支持VS2008和VS2010. (3)在VS中将版本控制…

在Win10 系统中安装VS 2008

安装原因:由于要对一个之前用win ce的项目进行开发维护,而win ce最多只能兼容VS2008的版本。因此现要在Win10上安装vs2008 1.由于win10系统没有自带.net Framework 3.5框架,需要我们下载一个.net Framework3.5框架的离线安装包。同时下载好VS2008的镜像。…

WIN SERVER 2008安装VS2015踩坑小结

系统:WIN SERVER 2008 Enterprise R2,未连接外网 软件:VS2015企业版 第一遍普通安装过程就不多赘述了,选择的典型安装 1、安装完成后,打开解决方案,所有项目显示加载失败,提示“项目无法加载&a…

安装VS2008(转)

原文链接 http://dev.yesky.com/msdn/329/7823829.shtml1、先用虚拟光驱将我们下载下来的文件打开: 打开后的会自动弹出一个安装对话框,如果没有的话到我的电脑里找到那个虚拟光驱将它打开就是了。安装对话框的效果如下图: 单击对话框中的Ins…

安装VS2008 SP1

最近由于在学习SQL2008,所以需要使用VS2008太耍一下关于SQL2008的新特性,尤其是Entity Framework。VS2008和SQL2008我都更新成英文版了。接下来安装VS2008的Sp1补丁,MS又使用了很恶心的网络安装,下载的Sp1才450K,然后网…

vs2008安装包及安装教程

注:本博客为原创博客,允许转载,转载时请注明出处 1.下载vs2008安装包,找不到资源的请戳这里:链接:https://pan.baidu.com/s/1dGIaPrj 密码:25dq 2.打开安装包,点击autorun进行安装 3…

VS2008安装部署应用程序安装包制作过程

制作过程 1.打开vs,新建项目->其他项目类型->安装和部署->安装项目 2、这里就会出现三个文件夹,不用多说一看就明白意思,点“应用程序文件夹–>添加–>文件夹 3、在“应用侧滑盖内需文件夹”文件夹上右键–>添加–>…

vs2008安装过程

解压SQLFULL_CHS.iso后,安装sql 2008: 重新运行安装程序后,有一个dos窗口,最后结果是成功。显示SQL Server 安装中心。 默认是在计划页面的,我点击了“系统配置检查器”,结果:操作完成,已通过13,失败0,警告0,已跳过1。 点击安装,进入安装页面。使用“全新SQL Serve…

VS2008安装Qt4.8

用MFC觉得就像是在刀尖上跳舞。听说Qt不错,忍不住想学一番,谁知安装就遇到许多困难。施展百度大法,耗尽心力终于练成。说实话,每次配置开发环境就像打仗一样,尤其像Qt这样的。 虽然Qt已经升级到5.3,但是由…

VS2008+Qt4.8安装笔记

一.建议安装顺序 可能需要先安装.NET3.5 1.vs2008(vs2008安装需勾选Team Developer,可避免安装后闪退,默认不勾选x64编译器)。 2.qt-opensource-windows-x86-vs2008-4.8.6(避免cmake找不到Qt4)。 3.Addin。 4.番茄。 二.安装成功记录 A(win10)&#x…

Visual Studio 2008系列教程(一):VS 2008安装详解!

前天得知Visual Studio 2008的正式版发布了!所以到www.Microsoft.com去看了一下,确定VS2008是真的发布了。不知道他会给我们带来什么惊喜呢?我们大家一起来体验一下吧! 想要用VS 2008的话,肯定就先要将它下载下来然后安…