首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C语言 >

用socket编纂ftp客户端的主要思路是什么

2013-03-19 
用socket编写ftp客户端的主要思路是什么?又:有什么要注意的地方?[解决办法]你不把自己的想法贴出来。也没办

用socket编写ftp客户端的主要思路是什么?
又:有什么要注意的地方?
[解决办法]
你不把自己的想法贴出来。也没办法针对性的给建议啊!

用winsock编写的话,首先肯定要学基本的winsock的几个基本函数WSAStartup(),sock(),connect(),send(),recv()这些的用法。然后就看RFC959。对FTP协议有个大概的概念。接下来就是编写一个简单的程序,比如向某个FTP服务器发送一个字符串,然后接收响应并打印出来。

FTP交互过程一般如下:
1. client调用connect(),与server三次握手建立TCP连接。
2. server给client发送欢迎信息。
3. client调用recv()获得欢迎信息,显示。
4. client调用send()发送命令,一般的格式给"COMMAND content\r\n"。其中COMMAND就是FTP命令了,如"USER user\r\n","PASS 123456\r\n"等。每条命令肯定是以\r\n结尾。
5. server调用recv()接收命令,解析命令,执行命令。然后调用send()发送执行的结果。执行的结果一般是应答码加上对应的描述。例如,如果登录成功的话可能发送“230 login\r\n”.详见RFC959。
6. client根据应答码执行对应的操作。若连接断开,可以跳到1;若发送下一条命令,跳到4。

单线程的client实现起来比较简单,在此基础上使用多线程进行改造,进而实现多线程下载,断点续传功能。
还有考虑一下各种异常情况的处理吧。

用MFC中的某个类(具体叫什么我也不记得,没用过)来编写的话就轻松多了。具体的细节到网上找一个源码看看就可以了。

最后要说的就是FTP控制端口是21,数据端口是20,。还有传输数据的时候两种模式要搞明白,主动模式 被动模式。
[解决办法]
回复4楼, 如果你仅仅是编写一个FTP客户端,是没必要看vsftpd的源码的。看了对你编写ftp客户端其实也没那么大的用处,除非你想自己编写一个ftp服务器。其实只要你的客户端符合RFC959,就可以和包括vsftpd在内的所有符合标准的ftp服务器交互。
    另外给个建议,进行开发的时候最好开着一个抓包软件,这样你可以检查你编写的客户端发出去的信息是不是和你预料中的一样,便于调试。以前我测试的时候就是和ftp://kernel.org(貌似也是vsftpd服务器)进行通信的,非常方便。

热点排行