Part4


文件传输

前面两篇文章所使用的范例都是传输字符串,有的时候我们可能会想在服务端和客户端之间传递文件。比如,考虑这样一种情况,假如 客户端显示了一个菜 单,当我们输入 S1、S2 或 S3(S 为 Send 缩写)时,分别向服务端发送文件 Client01.jpg、Client02.jpg、 Client03.jpg; 当我们输入 R1、R2 或 R3 时(R 为 Receive 缩写),则分别从服务端接收文件 Server01.jpg、 Server02.jpg、Server03.jpg。那么, 我们该如何完成这件事呢?此时可能有这样两种做法:

  • 类似于 FTP 协议,服务端开辟两个端口,并持续对这两个端口侦听:一个用于接收字符串,类似于 FTP 的控制端口,它接收 各种命令(接收或发送文件);一个用于传输数据,也就是发送和接收文件。
  • 服务端只开辟一个端口,用于接收字符串,我们称之为控制端口。当接到请求之后,根据请求内容在客户端开辟一个端口专用 于文件传输,并在传输结束后关闭端口。

现在我们只关注于上面的数据端口,回忆一下在第二篇中我们所总结的,可以得出:当我们使用上面的方法一时,服务端的数据端口可 以为多个客户端的多次 请求服务;当我们使用方法二时,服务端只为一个客户端的一次请求服务,但是因为每次请求都会重新开辟端 口,所以实际上还是相当于可以为多个客户端的多次请 求服务。同时,因为它只为一次请求服务,所以我们在数据端口上传输文件时 无需采用异步传输方式。但在控制端口我们仍然需要使用异步方式。

从上面看出,第一种方式要好得多,但是我们将采用第二种方式。至于原因,你可以回顾一下Part.1(基本概念和操作)中关于聊天程 序模式的讲述,因为接下来一篇文章我们将创建一个聊天程序,而这个聊天程序采用第三种模式,所以本文的练习实际是对下一篇的一 个铺垫。

版权声明:本文为YES开发框架网发布内容,转载请附上原文出处连接
张国生
上一篇:程序测试
下一篇:订立协议
评论列表

发表评论

评论内容
昵称:
关联文章

Part4
Part5
Part2
.NET Core 运行时T4模板使用,T4生成代码
VS2022添加支持.Net Framwork4.0的方法
微信支付:签名计算.net4.5
Dotfuscator Professional Edition 4.96 版的使用教程
vue-cli4构建build时删除console和debugger
03、4G 收款播报机写码
ios video标签部分mp4文件无法播放的问题
.Net Core 5.x Api开发笔记 -- 基础日志(Log4Net)(八)
.NET DLL反编译 .Net脱壳利器de4dot
.NET中大型项目开发必备(4)--数据库的读写分离
.NET 微服务——CI/CD(4):避坑和一点经验
Roslyn+T4+EnvDTE项目完全自动化(1) ——类自动生成界面
Roslyn+T4+EnvDTE项目完全自动化(3) ——生成c++代码
Identity Server 4到今年年底就停止支持了,试一下使用Orchard Core 作为认证服务
iNeuOS工业互联网操作系统,发布3.6.4版本:云端安全控制和实时日志功能,附Chrome、Firefox和Edge浏览器测试性能对比
微信支付:签名计算.net4.5
使用Hot Chocolate和.NET 6构建GraphQL应用(4) —— 实现Query映射功能