• 2020-07-26:如何用 socket 编程实现 ftp 协议?


    福哥答案2020-07-26:

    功能
    用户输入user username、pass password注册,注册后输入dir查看服务器文件列表,输入get filename path下载文件到指定路径。

    思路
    ①客户端建立连接,打开输入输出流,开循环支持多次数据交换,直到用户输入退出命令,再关闭流和连接。
    循环内读取用户输入,作初步检测,看是否为上面几个命令之一,否则提示“输入错误”,要求用户再次输入。
    若是上面几大命令之一,则将命令写到输出流,发送给服务器。
    ②服务器监听21端口,开无限循环支持多线程,每个循环内获取当前到达的连接,并传入一个新线程内处理该连接(其实把获取连接的工作交给线程也行)。
    线程内先获取输入流与输出流,然后开循环支持多次数据交换,直到客户端发来的命令为退出命令,才退出循环,关闭流和连接。
    循环内读取用户发来的命令,分类,分别执行相应方法,生成响应码,反馈给客户端。
    ③客户端接收服务端的反馈,根据响应码打印相应信息。
    ④进入下一次循环,接着读取用户命令。

    主要用到的 FTP 命令
    FTP 每个命令都有 3 到 4 个字母组成,命令后面跟参数,用空格分开。每个命令都以 " "结束。
    要下载或上传一个文件,首先要登入 FTP 服务器,然后发送命令,最后退出。这个过程中,主要用到的命令有 USER、PASS、SIZE、REST、CWD、RETR、PASV、PORT、QUIT。
    USER: 指定用户名。通常是控制连接后第一个发出的命令。“USER gaoleyi ”: 用户名为gaoleyi 登录。
    PASS: 指定用户密码。该命令紧跟 USER 命令后。“PASS gaoleyi ”:密码为 gaoleyi。
    SIZE: 从服务器上返回指定文件的大小。“SIZE file.txt ”:如果 file.txt 文件存在,则返回该文件的大小。
    CWD: 改变工作目录。如:“CWD dirname ”。
    PASV: 让服务器在数据端口监听,进入被动模式。如:“PASV ”。
    PORT: 告诉 FTP 服务器客户端监听的端口号,让 FTP 服务器采用主动模式连接客户端。如:“PORT h1,h2,h3,h4,p1,p2”。
    RETR: 下载文件。“RETR file.txt ”:下载文件 file.txt。
    STOR: 上传文件。“STOR file.txt ”:上传文件 file.txt。
    REST: 该命令并不传送文件,而是略过指定点后的数据。此命令后应该跟其它要求文件传输的 FTP 命令。“REST 100 ”:重新指定文件传送的偏移量为 100 字节。
    QUIT: 关闭与服务器的连接。

  • 相关阅读:
    微信小程序开发之普通链接二维码
    微信小程序之使用本地接口开发
    c# partial 分部类和分部方法
    .NET之美 第一部分C#语言基础
    Head First设计模式之命令模式
    Head First设计模式之责任链模式
    Head First设计模式之解释器模式
    Head First设计模式之迭代器模式
    Head First设计模式之中介者模式
    LeetCode 709. To Lower Case
  • 原文地址:https://www.cnblogs.com/waitmoon/p/13442946.html
Copyright © 2020-2023  润新知