免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 1289 | 回复: 0
打印 上一主题 下一主题

ftp客户端设计过程 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2009-03-17 22:57 |只看该作者 |倒序浏览
FTP服务端主进程的基本工作步骤:
  • 打开通信端口,端口号通常是21,使客户进程能够连接上;
  • 等待客户进程发出连接请求,处于"监听"状态;
  • 启动从属进程来处理客户进程发来的请求.从属进程处理完毕后即终止,但从属进程在运行期间根据需要还可能创建其他子进程;
  • 回到等待状态,继续接受其他客户进程发来的请求.
    FTP连接步骤:
      FTP使用两条TCP连接来完成文件传输:控制连接与数据连接.控制连接用于传输控制,数据连接用于数据输送.在服务器启动后,服务器就会在端口21等待客户的连接请求,有用户需要传输文件时,客户与服务器的端口21建立一个控制连接,用来传送客户的命令和服务器的应答,该连接一直保持到客户与服务器通信结束为止.当客户发出数据传输命令时,服务器会主动与客户建立数据连接,并与其进行数据交换.
    数据连接的基本流程:
  • 客户进程为数据连接选择一个本地的临时端口号,并在该临时端口上等待服务器的连接请求;
  • 客户进程在控制连接上用PORT命令将临时端口号发送给服务器;
  • 服务器受到端口号后,发送一个连接请求,同客户端的该端口建立一个数据连接,服务器端用于数据连接的端口号总是21(默认?);
  • 数据连接总是由发送文件的一方主动关闭,因为发送方总是用关闭连接来表示一个文件传输结束的.
    使用的开发包:sun.net.ftp.*;
    今天实现了登录的功能,在测试过程中,发现只能连接部分ftp服务器,对于这部分服务器,如果使用专用的ftp连接软件则能正常连接,百思不得其解.调试了很久都没有找到原因,上网找sun的ftp API文档,然而sun没有发布其API文档,郁闷.然后查看其他人的代码,看到了一个单词port, oh, my god!忘记了还有port要设置.总结登录的代码:
        ftp = new FtpClient();
        ftp.openServer(hostname, port);        //打开控制连接
        ftp. login(userField.getText(), passwdField.getText());   //登录


    本文来自ChinaUnix博客,如果查看原文请点:http://blog.chinaunix.net/u2/65478/showart_1866548.html
  • 您需要登录后才可以回帖 登录 | 注册

    本版积分规则 发表回复

      

    北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
    未成年举报专区
    中国互联网协会会员  联系我们:huangweiwei@itpub.net
    感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

    清除 Cookies - ChinaUnix - Archiver - WAP - TOP