udp协议 服务器

server/2024/10/18 15:02:03/

1 TCP和UDP基本概念

TCP:(Transmission Control Protocol)是一种面向连接、可靠的基于字节流的传输层通信协议。并且提供了全双工通信,允许两个应用之间建立可靠的链接以进行数据交换

 udp:(User Datagram Protocol):是一种无链接、不可靠、基于数据报文传输层协议,他不提供数据包的分组排序和组装功能,也不提供可靠性的保证

2 udp协议特点

1 udp基于IP 的简单的协议,不可靠的协议
2 优点就是简单 轻量化  传输速度快,要求可靠性不太高
3 缺点:没有流量控制没有应答确认机制。不能解决丢包重发顺序问题 

3 udp使用的场景

当应用程序对传输的可靠性要求不高,但是对传输速度和延迟要求较高时可以使用udp协议
例如语音和视频聊天。主要在这些场景如果丢了一两个数据包,不会产生太大的影响。

4 tcp和udp区别? 

1 TCP是基于连接的 而udp基于非链接的
2 tcp传输数据稳定可靠,适用于对网络通信质量要求高的场景,需要准确无误的发给对方,例如 传输文件 发送文件浏览网页。
3 udp优点是速度快,轻量级。但是有可能会产生丢包问题,所以适用于实时性要求较高的的但是对丢包没有要求太高场景
例如域名查询语音通话、视频直播等

服务器

搭建服务器页面

代码
       // 先讲socket进行客户端和服务器的书写Socket socket;private void button1_Click(object sender, EventArgs e){//参数1 ip地址类型 ipv4的类型//参数2 传递数据类型 数据报文类型//参数3 协议类型 udp协议//1 创建socket套接字作为服务器对象socket = new Socket(AddressFamily.InterNetwork, SocketType.Dgram, ProtocolType.Udp);// 2绑定ip和端口IPAddress iPAddress = IPAddress.Parse(“端口号");socket.Bind(new IPEndPoint(iPAddress,8081));//3 接受消息startReceive();}void startReceive(){//创建线程 开启线程new Thread(() =>{byte[] body = new byte[1024];while (true){int count =   socket.Receive(body); //接受数据string s = Encoding.UTF8.GetString(body, 0, count);richTextBox1.Invoke((Action)(() =>{richTextBox1.AppendText(s + "\t\n");richTextBox1.SelectionStart=richTextBox1.Text.Length;richTextBox1.ScrollToCaret();}));}}).Start() ;}//发消息的方法 给指定的人发消息string[] ips = new string[] {"端口号",  };private void button2_Click(object sender, EventArgs e){socket.SendTo(Encoding.UTF8.GetBytes(this.textBox1.Text),new IPEndPoint(IPAddress.Parse("端口号"), 8082));}
}

客户端:

搭建界面

代码:
void f1()
{byte[] body = new byte[1024];while (true){int count = socket.Receive(body); //接受数据string s = Encoding.UTF8.GetString(body, 0, count);richTextBox1.Invoke((Action)(() =>{richTextBox1.AppendText(s + "\t\n");richTextBox1.SelectionStart = richTextBox1.Text.Length;richTextBox1.ScrollToCaret();}));}
}
// 打开连接
Socket socket;
private void button1_Click(object sender, EventArgs e)
{try{//1创建客户端对象socket = new Socket(AddressFamily.InterNetwork, SocketType.Dgram, ProtocolType.Udp);//bind 如果前后端写的端口一致的时候 出现错误,端口号只能使用一次//2 绑定ip和端口号socket.Bind(new IPEndPoint(IPAddress.Parse("192.168.107.83"), 8082));Thread th = new Thread(f1);th.Start();}catch (Exception ex){MessageBox.Show("端口号被占用");}}//发送消息
private void button2_Click(object sender, EventArgs e)
{if (socket != null){//参数1 发送的字符串转成字节数组//参数2 发送数据的远程终端 new IPEndPoint(IPAddress.Parse("192.168.107.83"), 8081)socket.SendTo(Encoding.UTF8.GetBytes("倒反天罡"), new IPEndPoint(IPAddress.Parse("192.168.107.83"), 8081));}
}//关闭
private void button3_Click(object sender, EventArgs e)
{socket.Close();//关闭socket = null;
}

效果如下:

打开服务器,客户链接并发送消息

服务器向客户端发送消息


http://www.ppmy.cn/server/53192.html

相关文章

Linux 常用命令

文章目录 Linux 常用命令开机、重启和用户登录注销用户管理帮助指令文件目录类时间日期类搜索查找类压缩和解压类组管理与文件管理网络管理进程管理服务管理防火墙管理定时任务 Linux 常用命令 开机、重启和用户登录注销 shutdown –h now:立即进行关机。shutdown…

网络构建和设计方法_3. 网络设计

1.层次化网络模型设计 层次化网络设计模型,可帮助设计者按照层次设计网络架构,并对不同层次赋予特定网络功能,选择适合的设备/系统。在典型层次化网络结构中,核心层通常选用具备高可用性和性能优化的高端路由器/交换机&#xff1b…

Linux运维:MySQL数据库(1)

1.信息与数据: 数据是信息的载体,信息是数据的内涵。数据库就是存储数据的仓库,并长期存储在计算机磁盘中,可由多个用户和应用程序共享的数据集合,就是数据库。 2.数据库中的数据的特点: 2.1.数据是按照某…

一站式uniapp优质源码项目模版交易平台的崛起与影响

一、引言 随着信息技术的飞速发展,软件源码已成为推动行业进步的重要力量。源码的获取、交易和流通,对于开发者、企业以及项目团队而言,具有极其重要的意义。为满足市场对高质量源码资源的迫切需求,一站式uniapp优质源码项目模版…

基于PHP的长城景区信息管理系统

有需要请加文章底部Q哦 可远程调试 基于PHP的长城景区信息管理系统 一 介绍 此长城景区信息管理系统基于原生PHP开发,数据库mysql。系统角色分为用户和管理员。 技术栈:phpmysqlphpstudyvscode 二 功能 用户 1 注册/登录/注销 2 浏览长城景区信息(旅…

『Django』模型入门教程-操作MySQL

theme: smartblue 点赞 关注 收藏 学会了 本文简介 一个后台如果没有数据库可以说废了一半。日常开发中大多数时候都在与数据库打交道。Django 为我们提供了一种更简单的操作数据库的方式。 在 Django 中,模型(Model)是用来定义数据库结构的类。每个模型类通常对…

如何加密电脑文件夹?安全可靠的文件夹加密工具分享

如何加密电脑文件夹呢?很多办公的小伙伴都有这样的疑问。想要保护自己的电脑文件夹数据的安全,但又不知道如何下手。这时候就需要借助电脑文件加密工具进行文件安全防护了。 本文将详细讲解电脑文件夹加密的方法,推荐几款款安全可靠的文件夹加…

从单点到全景:视频汇聚/安防监控EasyCVR全景视频监控技术的演进之路

在当今日新月异的科技浪潮中,安防监控领域的技术发展日新月异,全景摄像机便是这一领域的杰出代表。它以其独特的360度无死角监控能力,为各行各业提供了前所未有的安全保障,成为现代安防体系中的重要组成部分。 一、全景摄像机的技…