当前位置: 首页 > news >正文

FTP中的收获

在这几天编写FTP服务器端和客户端程序时,总是遇到这样那样的错误和困难,现在已经解决大部分,几点收获记录如下:

1. 明白了主动模式和被动模式的根本区别:
主动模式:服务器向客户端敲门,然后客户端开门;
被动模式:客户端向服务器敲门,然后服务器开门。

2. Socket的Send方法是非阻塞的;

3. ASCII传输模式和Binary传输模式,对于ASCII传输模式,传输的数据大小不大时,还是很方便的,但是用于传输大量数据,如大文件时,接收方处理并不容易。
在我的设计中,只有使用Binary模式才能保证每次传输都是正确。特别是使用了Socket的SendFile方法,这是一个阻塞方法,只要数据未发送完,都会被阻塞直到发送完毕。系统会自动处理缓冲等问题,非常方便;属于Binary模式的。

4. 明白了一种协议标准的必要性。

5. 学会了许多FTP命令。

6. 基本掌握了Socket的工作原理和编程方式。

7. 进一步理解了多线程编程。

8. FTP是File Transfer Protocol(文件传输协议)的缩写,用来在两台计算机之间互相传送文件。相比于HTTP,FTP协议要复杂得多。复杂的原因,是因为FTP协议要用到两个TCP连接,一个是命令链路,用来在FTP客户端与服务器之间传递命令;另一个是数据链路,用来上传或下载数据。
(1)用于传送命令的两个Socket,它们在整个过程中都是连接着的;
(2)用于传送数据的两个Socket,只在有数据传送时才建立连接,数据传送完后,则断开连接。
(3)还有两个Socket用于监听,采用主动模式时,ClientListener处于监听状态;采用被动模式时,ServerListener处于监听状态。

暂时就这么多了,晚了,要睡了。。。。zzzzzzzzzzzzzzzzzzzz

参考资料:
1. 主动FTP vs. 被动FTP 权威解释
2. ftp应答码
3. FTP wiki
4. 了解FTP服务与FTP协议(图)
5. 一个FTP类
6. 一个FTP客户端的C#代码    2
7. FTP协议的分析和扩展
8. FTP命令详解
9. http://www.faqs.org/rfcs/rfc959.html  RFC 959 (RFC959)   中文版
10. FTP---文件传输协议

其它资源:
ftp协议簇
http://www.ietf.org/rfc/rfc959.txt
http://www.ietf.org/rfc/rfc1579.txt

ftp安全扩展
http://www.ietf.org/rfc/rfc2228.txt
http://www.ietf.org/rfc/rfc2246.txt

ftp安全扩展,SSL接口草案:
http://www.ietf.org/internet-drafts/draft-murray-auth-ftp-ssl-13.txt

ssl/tls协议规范:
http://www.ietf.org/rfc/rfc2246.txt

OpenSSL,一个广为应用的SSL实现:
http://www.openssl.org

支持ssl ftp的ftp client:
http://www.ford-hutchinson.com/~fh-1-pfh/ftps-ext_col.html#client

支持ssl ftp的ftp server:
http://www.ford-hutchinson.com/~fh-1-pfh/ftps-ext_col.html#server

转载于:https://www.cnblogs.com/fengmk2/archive/2007/01/17/622170.html


http://www.taodudu.cc/news/show-647374.html

相关文章:

  • 【physx/wasm】在physx中添加自定义接口并重新编译wasm
  • excel---常用操作
  • Lora训练Windows[笔记]
  • linux基础指令讲解(ls、pwd、cd、touch、mkdir)
  • InnoDB 事务处理机制
  • 启明云端ESP32 C3 模组WT32C3通过 MQTT 连接 AWS
  • ASP.Net2.0 数据绑定控件的优越性在哪里?
  • 装AJAX.NET 1.0的环境,我遇到个问题,进来解答下
  • 信任的力量
  • 不能装载通讯模块。驱动程序安装不正确。
  • 面向搜索的中文分词设计
  • SQL Server 2005与2000写法上的差别
  • CG笔记之一——透视投影
  • SQLite B+树实现代码
  • Some thoughts on my own O/R Mapping or Code Generation tools
  • [翻译] 构建完美的WPF开发工作站
  • J2EE Architecture(4)
  • JSF优点(转载自中国IT实验室)
  • 如何自学JSP。--摘抄http://hi.baidu.com/comasp
  • max与top的效率
  • 精确计算代码执行时间
  • 理解 ActivityExecutionContextManager
  • Linq 演变的过程(delegate = Lamb = Linq)
  • 光阴四载,梦想在望
  • CSS常用文本属性
  • VSS2005 添加文件夹方法!
  • 一个不错的SQL储存过程分页,储存过程+Repeater,如果只是浏览数据的话,快就一个字...
  • DotNetNuke与MemberShip的结合(五年版) 三步汇总
  • 快速恢复Word、Excel的默认初始设置
  • AnkhSVN 1.0.2778 简体中文版发布
  • [转]获取xml节点值和属性值(兼容ie和firefox)
  • 请问如何把.net framework框架集成在安装程序里头?
  • 修改资料时碰到的问题,
  • 过滤脚本(C#,script,iframe,html)
  • 聊聊我对黑客技术的思考
  • 以Post方式发送数据采用WebClient