网站首页 > 教程分享 正文
在服务端我们通常用一个TcpListener来监听一个IP和端口,客户端来一个请求的连接,在服务端可以用同步的方式来接收,也可以用异步的方式去接收。在了解编程模式之前,首先我们先简单介绍下模式中所需涉及到的几个知识点,同步编程、异步编程及阻塞。
什么是同步编程?
这里就是一个同步接收的方式,那为什么说同步呢,因为在这个端口下如果同时来了两个客户端请求,第一个连接得到响应,与服务端建立通讯,而第二个请求就会被一直阻塞直到第一个请求完成操作,各个请求之间就好像排个队,顺序执行,这就是同步。
什么是异步编程?
当同时出现两个或者多个客户端请求时,服务端同时响应多个客户端,并同时进行连接。各个客户端与服务器的通讯是并行的,一个客户端不必等另一个客户端完成操作。通常用这两个方法来接收一个客户端请求。
什么是阻塞?
阻塞是指调用结果返回之前,当前线程会被挂起。比如:Console.ReadLine(),如果你不向控制台输入数据,这个方法就会一直等待,直到你输入数据后才会向下执行。这个时候当前线程被挂起来了,让CPU去做其他事情。
常用的几种编程模式
- 阻塞模式
来一个客户端连接,服务端就会响应,然后执行操作,如果操作没完成再来一个客户端请求就进行阻塞,直到第一个请求完成操作。
特点:简单易行,适合客户端请求次数比较少场景,仅适用于短连接。
短连接与长连接概念可参考C#实现TCP通讯
- 多线程+阻塞模式
服务端响应客户端的请求后,不等待前一个连接是否完成操作。
如果关闭当前连接,则是异步的短连接,如果不关就是异步的长连接。
特点:这种模式由于引入了多线程,提高了系统的效率,需要管理线程生命周期,可适用于短连接或长连接。
- 非阻塞模式
不再用AcceptTcpClient()这种阻塞方式来接收请求。当执行BeginAcceptTcpClient时候编译器就会在线程池中创建一个线程监听连接请求,如果有请求就会自动调用委托的方法(这里的AcceptClient)来完成一个TcpClient的实例,再来一个客户端请求,线程池又新建一个线程去实例一个TcpClient对象。
猜你喜欢
- 2025-03-13 Bridge 桥接模式简介与 C# 示例【结构型2】【设计模式来了_7】
- 2025-03-13 零基础转型C#软件工程师-09运算符
- 2025-03-13 《企业应用架构模式》之事件驱动架构
- 2025-03-13 C#-StreamWriter与StreamReader 114
- 2025-03-13 探索.NET中的定时器:选择最适合你的应用场景
- 2025-03-13 一文弄懂“C#”程序中的变量
- 2025-03-13 在C#中如何删除一个目录?
- 2025-03-13 C# 设计模式之-状态模式
- 2025-03-13 打不死的小强net core微服务快速开发框架Viper
- 2025-03-13 AOT漫谈(第一篇): 如何调试C# AOT程序
你 发表评论:
欢迎- 最近发表
-
- IT之家学院:使用PIN或密码审批管理员权限
- Yarn 安装的时候提示错误 error:0308010C:digital envelope routines
- Windows常用的一些CMD运行命令(windows常见的命令)
- 电脑忘记开机密码10秒解决(戴尔电脑忘记开机密码10秒解决)
- 如何下载Windows 10聚焦提供的锁屏壁纸
- Windows CMD 命令大全:简单粗暴收藏!
- 系统小技巧:解决CHKDSK只读模式问题
- Windows的cmd都有哪些奇技淫巧?这22个CMD命令记得收藏起来!
- windows错误代码0x80072EE2?win10系统更新错误问题的处理方法
- Windows 10技术预览版快捷键方式汇总
- 标签列表
-
- css导航条 (66)
- sqlinsert (63)
- js提交表单 (60)
- param (62)
- parentelement (65)
- jquery分享 (62)
- check约束 (64)
- curl_init (68)
- sql if语句 (69)
- import (66)
- chmod文件夹 (71)
- clearinterval (71)
- pythonrange (62)
- 数组长度 (61)
- javafx (59)
- 全局消息钩子 (64)
- sort排序 (62)
- jdbc (69)
- php网页源码 (59)
- assert h (69)
- httpclientjar (60)
- postgresql conf (59)
- winform开发 (59)
- mysql数字类型 (71)
- drawimage (61)
本文暂时没有评论,来添加一个吧(●'◡'●)