C#使用ftp进行文件上传和下载功能(一)

embedded/2024/10/18 10:16:25/

一.FTP概述
FTP (File Transfer Protocol,文件传输协议)是典型的C/S架构的应用层协议,需要由服务端软件、客户端软件两个部分共同实现文件传输功能。FTP客户端和服务器之间的连接是可靠的,面向连接的,为数据的传输提供了可靠的保证。

FTP服务器默认使用TCP协议的20、21端口与客户端进行通信
20端口用于建立数据连接,并传输文件数据,20端口只有在传输数据时才会打开
21端口用于建立控制连接,并传输FTP控制命令

FTP工作原理
FTP有两种工作模式,一种方式叫做Standard (也就是Active, 主动方式),一种是Passive(也就是PASV,被动方式)。
主动模式
FTP客户端首先和FTP Server 的TCP21端口建立连接,通过这个通道发送命令,客户端需要接收数据的时候在这个通道上发送PORT命令。PORT命令包含了客户端用什么端口接收数据。在传送数据的时候,服务器端通过自己的TCP 20端口发送数据。FTP server必须和客户端建立一个新的连接用来传送数据。
被动模式
在建立控制通道的时候和Standard模式类似,当客户端通过这个通道发送PASV命令的时候,FTP server打开一个位于1024和5000之间的随机高位端口并且通知客户端在这个端口上传送数据的请求,然后FTP server将通过这个端口进行数据的传送,这个时候FTP server不再需要建立一个新的和客户端之间的连接。

二、FTP创建

1.windows系统直接右键此电脑(我的电脑)-->右键管理,进入计算机管理窗口;

2.点击服务与应用程序-->点击IIS-->打开本地IIS管理器-->网站-->右键添加FTP服务站点;

3.进入添加FTP站点界面,输入FTP站点名称,物理路径; 

4.填写好FTP站点名称,设置完FTP内容目录后,点击确定按钮,再点击下一步; 

5.点击下一步后,先不要急着继续,查一下电脑的IP地址 打开命令框cmd ;

6.输入命令ipconfig 回车,可以看到自己电脑的IP地址 ;

7.回到FTP站点添加向导,设置绑定和SSL。IP地址栏输入刚刚查到的IP地址,端口保持为21不变,启用虚拟主机名项可以不必勾选,自动启动FTP站点可以勾选,SSL可以选择无SSL,操作完成后点击下一步;

 

8.接下来FTP站点添加向导将要求填写身份验证和授权信息,勾选身份验证下的匿名和基本两项前的复选框,允许访问项设置为所有用户,勾选读取和写入权限前的复选框,点击完成;

 

9.FTP站点已经创建成功并正常运行 。

上面的操作是默认Windows功能中的IIS服务和FTP是全部开启的,如果没有全部开启,在执行上面操作的时候;先开启IIS和FTP的所有功能,具体步骤如下:

1.进入控制面板:

2.点击程序和功能;

3.选择启用或关闭Windows功能;

4. 红框内的所有选项全部勾选点击,点击确定即可。


http://www.ppmy.cn/embedded/8279.html

相关文章

ARM_day6:实现字符串数据收发函数的封装

程序代码: uart4.h: #ifndef __UART4_H__ #define __UART4_H__ #include"stm32mp1xx_gpio.h" #include"stm32mp1xx_rcc.h" #include"stm32mp1xx_uart.h" void uart4_config(); void putchar(char dat); char getchar();…

Spring Boot集成Https快速入门Demo

1.什么是https? HTTPS,也称作HTTP over TLS。TLS的前身是SSL,TLS 1.0通常被标示为SSL 3.1,TLS 1.1为SSL 3.2,TLS 1.2为SSL 3.3 HTTPS和HTTP协议相比提供了 数据完整性:内容传输经过完整性校验数据隐私性:内…

Jenkins 流水线多阶段构建

Jenkins流水线配置遇到 无法识别的。需要使用 自定义环境 项。 比如官网的在流水线中使用Docker Started by remote host 172.17.0.1 Obtained Jenkinsfile from git http://10.99.20.51:8082/root/java-devops-demo.git org.codehaus.groovy.control.MultipleCompilationErro…

2024.4.19作业

1.总结二进制信号量和计数型信号量的区别,以及他们的使用场景。 二进制信号量只有0和1两个状态,如果信号被一个线程接收,那别的线程就无法接收此信号 计数型信号可以累计,可以被多个线程接收 2.使用计数型信号量完成生产者和消费…

使用Python比较两张人脸图像并获得准确度

使用 Python、OpenCV 和人脸识别模块比较两张图像并获得这些图像之间的准确度水平。 一、原理 使用Face Recognition python 模块来获取两张图像的128 个面部编码,并比较这些编码。比较结果返回 True 或 False。如果结果为True ,那么两个图像将是相同的…

小球反弹(蓝桥杯)

文章目录 小球反弹【问题描述】答案:1100325199.77解题思路模拟 小球反弹 【问题描述】 有一长方形,长为 343720 单位长度,宽为 233333 单位长度。在其内部左上角顶点有一小球(无视其体积),其初速度如图所…

【最新】生成式人工智能(AIGC)与大语言模型(LLM)学习资源汇总

基本概念学习 a) Andrej Karpathy 的 - 大型语言模型简介:https://www.youtube.com/watch?vzjkBMFhNj_g 该视频对 LLMs 进行了一般性和高级的介绍,涵盖推理、缩放、微调、安全问题和提示注入等主题。 b) Nvidia 的生成式 AI 介绍:Course …

Midjourney简明教程 - 合集

Midjourney简明教程(一):有关Midjourney的基本信息 AI绘画 绘画是人类一门很古老的艺术门类,人类通过实体的器具、画笔、颜色、颜料等反映客观世界和表达主观世界。 而AI绘画则是通过借助就计算机机器学习算法和模型来生成绘画…