首页 > 其他分享 >【代码】--库函数学习 ftp通信 相关

【代码】--库函数学习 ftp通信 相关

时间:2024-06-20 19:42:58浏览次数:12  
标签:ftp 文件 -- list 链表 int 目录 dir 库函数

1. FTP介绍

  (1)主动模式(PORT): 服务器主动去连接客户端的数据端口

  (2)被动模式(PASV): 客户端主动去连接服务器的数据端口

ftp客户端通信流程(编程流程)如下:
  1. 客户端用账号、密码进行登录。  
  2. 提交主动模式还是被动模式。 
  3. 如果是被动模式,需要去连接服务器开放的数据传输端口
  4. 发送指令到服务器的控制端口,获取服务器返回结果
  5. 上传文件夹、上传文件
  6. 下载文件夹、下载文件

2. 相关函数介绍

     ftp中封装的相关函数太多,只介绍主要的函数。

     

2.1 dir_list.c (构建目录下文件链表)

       以某一个目录下全都是普通文件,不包含子目录来讲解。(因为感觉存在子目录时代码有问题)

 数据结构:
//目录或文件节点
typedef struct _dir_node
{
    char *file_name;   //文件(目录名)名,例如:aaa.txt
    char *dir_name;    //绝对路径文件名,例如:/home/root/aaa.txt
    int is_dir;        //1表示是目录文件,2表示是普通文件   
}dir_node;

//目录链表:存储某个目录下的所有文件
typedef struct _dir_list
{
    dir_node **list;  //指向文件节点指针的指针
    int count;        //当前目录下的文件计数
    int is_local;      //1:表示是本地客户端中目录。   该标志在下载或上传时会用到
                       //0:表示是ftp服务器中目录
}dir_list;
重要函数
/*该函数做的事情:
   (1)创建了一个dir_list目录链表结构;
   (2)创建了length个dir_node *指针,并让dir_list.list指向这些。
*/
(1)dir_list* create_dir_list(int length,int dir_is_local)

/*该函数做的事情:(感觉该函数有bug)
   (1)把一个目录下所有文件(包括目录文件,但除了.和..)加入到目录链表中
   (2)如果该目录下的最后一个文件是目录文件,则将子目录下的文件也加入到目录链表中(递归)
    注意:如果存在子目录,则该函数可能存在问题
*/
(2)int get_dir_list(dir_list *p_dir_list,char *cur_dir)

最终得到的结果

       

 

标签:ftp,文件,--,list,链表,int,目录,dir,库函数
From: https://www.cnblogs.com/dkhlaojogo/p/18259375

相关文章

  • 300PLC连接Modbus转Profibus网关与阀岛modbusRTU通讯
    一、概况300PLC作为常见的控制器设备,在与阀岛ModbusRTU通讯时,通常需要借助Modbus转Profibus网关(XD-MDPB100)来实现连接和数据交换。PLC通过Modbus转Profibus网关(XD-MDPB100)与阀岛ModbusRTU通讯是比较快捷有效的方法。本文将详细介绍300PLC利用Modbus协议转Profibus协议模块与阀......
  • python数据分析-心脏瓣膜手术风险分析与预测
    一、研究背景和意义人的心脏有四个瓣膜,主动脉银、二尖、肺动脉和三尖源不管是那一个膜发生了病变,都会导致心脏内的血流受到影响,这就是通常所说的心脏期膜病,很多是需要通过手术的方式进行改善的。随着人口老龄化的加剧,,心脏期膜病是我国最常见的心血管疾病之-,需要接受心脏瓣......
  • CSharp: 未加载文件或程序集
    发布到IIS服务器提示错误:不能多个版本的同一DLL,虽是文件名不同,也是这个报错    未能加载文件或程序集“System.Runtime.CompilerServices.Unsafe,Version=4.0.4.0,Culture=neutral,PublicKeyToken=b03f5f7f11d50a3a”或它的某一个依赖项。找到的程序集清单定义与程......
  • 冰雹数
    题目描述输入描述输出描述输出一个正整数,表示不大于N 的数字,经过冰雹数变换过程中,最高冲到了多少。输入输出样例示例输入10输出52``·运行限制最大运行时间:1s最大运行内存:256M总通过次数:1194  |  总提交次数:2468  |  通过率:48.4%难度......
  • 算法题---五个线程排序输出
    1、五个线程编号1、2、3、4、5,每个线程的执行完成时间不确定,要求按照排号顺序输出各个线程的结果,并且不能等所有线程执行完毕再排序输出,比如线程2先于线程1执行完了此时还不能输出。要等线程1输出完之后才能输出,其他线程以此类推方案一、利用所得传递,创建五把锁lock1、2、3、4......
  • JAVA基础——接口(全网最详细教程)
    概述我们已经学完了抽象类,抽象类中可以用抽象方法,也可以有普通方法,构造方法,成员变量等。那么什么是接口呢?接口是更加彻底的抽象,JDK7之前,包括JDK7,接口中全部是抽象方法。接口同样是不能创建对象的。  把特有的方法(行为)写成接口,要用的时候调用接口就行了,除了狗和青蛙......
  • 远程桌面提示"你的凭据不工作"解决方案
    这几天遇到用户名密码正确,但是使用远程桌面提示“你的凭据不工作”的问题,尝试了下面连接提到的方法,均未解决。https://www.cnblogs.com/wmxblog/p/17540648.html经过查找资料,发现是CredSSP的问题,有两个方案来解决这个问题。编辑远程桌面文件打开远程桌面,设置好信息以后,将其另......
  • 2024年 Java 面试八股文(20w字)
    第一章-Java基础篇1、你是怎样理解OOP面向对象   难度系数:⭐面向对象是利于语言对现实事物进行抽象。面向对象具有以下特征:继承:继承是从已有类得到继承信息创建新类的过程封装:封装是把数据和操作数据的方法绑定起来,对数据的访问只能通过已定义的接口多态性:多态性是指允......
  • Java面试八股文2024最新版
    一、java基础1、java有哪几种数据类型?基本数据类型:byte(1),char(2),short(2),int(4),long(8),double(8),float(4),boolean(1)引用数据类型:各种类和接口,枚举,数组2、 面向对象和面向过程的区别?面向对象和面向过程都是一种开发思想。面向过程就是根据解决问题所需要的步骤,具体化的一步一步的去实现......
  • 微信小程序识别身份证 (一)
    方法介绍:通过调用接口的方式进行实现原生微信小程序识别身份证官方文档:身份证识别,获取接口调用凭据实现步骤如下:1.首先要在微信的app.json下面配置允许访问相机"permission":{"scope.userLocation":{"desc":"你的位置信息将用于小程序位......