最近关注FTP程序源代码的朋友非常多,这里简单说明一下。

其实FTP也就是普通的Socket程序,只是需要按照FTP协议(RFC959, 1635?可能我记错了)去做,也就是每个消息有固定的结构的,比如头3个字节必须是200,201,300,400之类的数字表示操作结果。

写FTP协议的程序主要要明白的一个关键问题是双socket,一个control socket,一个是data socket,当然,你读源代码还可能发现一个passive socket:

control socket是用来在Client和Server之间传递命令的(Client<->Server:21):比如Client向Server的21端口发一个USER命令,即发用户名和密码给Server,再比如Client发LIST命令给Server,都是要用control socket传递命令并接收命令操作结果的。
data socket是用来在Client和Server之间传递数据的(Client<->Server:20):比如Client发送一个LIST命令给Server之后,如果执行成功,这个成功消息的返回要由上面的control socket返回给Client,但LIST得到的那些数据就要由data socket来传递,也只有在收到这个成功的消息之后,Client才会连接Server的20端口去接收数据。
另外有passive socket,是一种data socket,是反向连接的,即Server发了LIST命令操作成功的消息给Client之后,Client会告诉Server一个端口(比如3000),Server才会连接Client的3000端口,把LIST得到的数据发送给Client。

我发现了一些FTP的源代码,给你一份C的吧:
FTP Server: http://www.opensource.apple.com/darwinsource/Current/lukemftpd-17/
FTP Client: http://www.opensource.apple.com/darwinsource/Current/lukemftp-5/
当然,你也可以去看看OpenBSD提供的FTP server源代码:
http://www.openbsd.org/cgi-bin/cvsweb/src/libexec/ftpd/
或者你去看看有名的Berkeley上面的各种各样 FTP server的源代码吧:
http://www.googlesyndicatedsearch.com/u/berkeley?q=ftp+server&sitesearch=berkeley.edu&domains=berkeley.edu
还sf.net上提供的各种ftp源代码:
在http://sourceforge.net/search/index.php面页上第一栏"with all of the words"里填入ftp搜索吧,各种源代码都有,各种出名的FTP也都在上面了。

具体的源代码分析暂时我就不做了。

FTP服务器和客户端源代码编写问题(ftp server client source)相关推荐

  1. FTP服务器和客户端

    <计算机通信网络>课程项目 终期报告 题 目: FTP协议实现 组 号: 第7组 任课教师: 王瑞 FT 2019年03月01日 FTP协议实现 一.项目介绍 文件传输协议(File Tr ...

  2. Linux FTP服务器与客户端(FTP命令 C/C++代码实现)

    FTP 是 TCP/IP 提供的标准互联网协议,用于将文件从一台主机传输到另一台主机.它主要用于将网页文件从其创建者传输到充当 Internet 上其他计算机的服务器的计算机.它还用于将文件从其他服务 ...

  3. Linux ftp服务器和客户端解析

    文章目录 ftp术语 是什么 工作方式 用户授权 传输模式 ftp服务器 ftpd vsftpd 安装 文件结构 运行方式 vsftpd配置文件 chroot 账号登录 限制 欢迎信息 虚拟路径 ft ...

  4. windows 远程访问别人的linux下的ftp服务器,linux与windows之间使用ftp相互访问(CentOS提示ftp:command not found)...

    启动linux及windows系统,这里默认linux系统的IP为192.168.1.15.打开windows的DOS终端,首先输入 :ftp 192.168.1.15 在使用账户和密码登陆:登陆格式 ...

  5. ftp服务器连接成功不显示端口,ftp被动联接端口是怎样确定的

    sftp是ssh内含的协议,只要sshd服务器启动了,它就可用,它本身不需要ftp服务器启动. FTP服务器和客户端要进行文件传输,就需要通过端口来进行.FTP协议需要的端口一般包括两种: 控制链路- ...

  6. linux下最好的ftp服务器,用Linux系统构建高效FTP服务器

    配置虚拟用户FTP 上面配置的FTP服务器有一个特点,就是FTP服务器的用户本身也是系统用户.这显然是一个安全隐患,因为这些用户不仅能够访问FTP,也能够访问其它的系统资源.如何解决这个问题呢?答案就 ...

  7. ftp 服务器怎么创建文件夹权限,FTP服务器的权限设置

    在桌面上右击"我的电脑",执行"管理"命令,在"计算机管理"窗口的左窗格中依次展开"系统工具"→"本地用户和组 ...

  8. iis自带的ftp服务器权限设置方法,iis配置ftp服务器的方法

    各位站长一说到ftp服务器大家一定想到很多ftp服务器的软件,今天给您玩个特别的,那就是无须安装任ftp服务器软件,我们照样配置ftp服务器. 1.1 检查是否安装已安装IIS6组件 在windows ...

  9. Android中FTP服务器、客户端搭建以及SwiFTP、ftp4j介绍

    本文主要内容: 1.FTP服务端部署---- 基于Android中SwiFTP开源软件介绍: 2.FTP客户端部署 --- 基于ftp4j开源jar包的客户端开发 : 3.使用步骤 --- 如何测试我 ...

最新文章

  1. mac 配置c语言环境,C语言学习笔记————–MAC下配置GTK+环境
  2. 基于Jquery+Ajax+Json+高效分页
  3. calloc、malloc、realloc函数的区别及用法
  4. Windows系统文件详解【大全】
  5. vue 常用ui组件
  6. Linux命令大总结(早期学习时的笔记)
  7. BDS-HA:构建高可用、低延迟的HBase服务
  8. react文字滚动插件_【赠书】Preact(React)核心原理详解
  9. TIOBE 2 月编程语言排行榜:Python 逼近 C,Groovy 重回 TOP20
  10. linux命令行学习游戏,如何在Linux命令行中下载GOG游戏
  11. oracle用户权限管理
  12. c# mysql varbinary_SQL Server 中,实现 varbinary 与 varchar 类型之间的数据转换
  13. 【主动轮廓模型(一)】《Snakes: Active Contour Models》算法原理与OpenCV实现
  14. 在Windows8系统下exe格式会计课件下载播放帮助图解
  15. *揭秘!阅读类APP如何实现自动阅读赚钱**
  16. 联想重装系统去掉保护_解决联想硬盘保护系统忘记密码问题,重新安装Windows10系统...
  17. 重置uchome密码
  18. Set Scrolling Pictrues in the WebPage
  19. cad中tk什么意思_cad图纸中各种字母是什么意思
  20. 云原生Docker搭建为知笔记

热门文章

  1. log4net使用指南(转载)
  2. response 中OutputStream和PrintWriter区别
  3. 基于tutk方案的p2p源码_以太坊源码分析--p2p节点发现
  4. 【C++深度剖析教程1】C++中的经典问题解析-c++中的对象的构造顺序与析构顺序
  5. ElasticSearch初体验之使用Java进行最基本的增删改查
  6. VUE初始化一个项目
  7. 洛谷P2480 [SDOI2010]古代猪文(卢卡斯定理+中国剩余定理)
  8. Docker自动补全容器名
  9. bzoj3389:[Usaco2004 Dec]Cleaning Shifts安排值班
  10. 随机系列生成算法(随机数生成)