Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1471650
  • 博文数量: 254
  • 博客积分: 8696
  • 博客等级: 中将
  • 技术积分: 2961
  • 用 户 组: 普通用户
  • 注册时间: 2008-04-03 16:46
文章分类

全部博文(254)

文章存档

2015年(4)

2014年(18)

2013年(16)

2012年(8)

2011年(25)

2010年(2)

2009年(74)

2008年(107)

分类: Java

2009-03-17 22:57:21

FTP服务端主进程的基本工作步骤:
  1. 打开通信端口,端口号通常是21,使客户进程能够连接上;
  2. 等待客户进程发出连接请求,处于"监听"状态;
  3. 启动从属进程来处理客户进程发来的请求.从属进程处理完毕后即终止,但从属进程在运行期间根据需要还可能创建其他子进程;
  4. 回到等待状态,继续接受其他客户进程发来的请求.

FTP连接步骤:

  FTP使用两条TCP连接来完成文件传输:控制连接与数据连接.控制连接用于传输控制,数据连接用于数据输送.在服务器启动后,服务器就会在端口21等待客户的连接请求,有用户需要传输文件时,客户与服务器的端口21建立一个控制连接,用来传送客户的命令和服务器的应答,该连接一直保持到客户与服务器通信结束为止.当客户发出数据传输命令时,服务器会主动与客户建立数据连接,并与其进行数据交换.

数据连接的基本流程:

  1. 客户进程为数据连接选择一个本地的临时端口号,并在该临时端口上等待服务器的连接请求;
  2. 客户进程在控制连接上用PORT命令将临时端口号发送给服务器;
  3. 服务器受到端口号后,发送一个连接请求,同客户端的该端口建立一个数据连接,服务器端用于数据连接的端口号总是21(默认?);
  4. 数据连接总是由发送文件的一方主动关闭,因为发送方总是用关闭连接来表示一个文件传输结束的.
使用的开发包: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());   //登录
阅读(1754) | 评论(0) | 转发(0) |
0

上一篇:事件类型

下一篇:java.awt.List的getRows()

给主人留下些什么吧!~~