ftp学习之两个套接字

本文详细解析了FTP文件传输过程中的两种模式:PASV被动模式和PORT主动模式。介绍了如何通过命令套接字(cmdSocket)与数据套接字(dataSocket)实现文件列表的获取。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

本地socket连接到服务器21号口后,若发送LIST命令,返回信息是要先设定PASV/PORT模式,需要再开启一个数据链路,然后通过主socket(连接服务器21号)发送LIST命令,并通过新开的数据链路接收数据;
需要有两个套接字,一个用于命令(cmdSocket),一个用于数据(dataSocket)
cmdSocket与ftp服务器21端口(如果ftp服务器没做特殊设置的话)连接,dataSocket因PASV和PORT模式不同,而有所差别。
PASV模式:
1)通过命令cmdSocket套接字发送PASV
2)server端会返回ip地址和专门的数据传输端口号
3)在命令套接字cmdSocket上发送LIST命令
4)本地建立dataSocket连接server提供的数据传输端口号(此步中,本地作为客户端)
5)server端通过cmdSocket返回150 开头的响应(需要读取cmdSocket)
6)本地通过dataSocket接收数据,即通过dataSocket的inputStream读取dataSocket中的数据
7)传输完毕(read返回-1),cmdSocket会返回226 开头的响应,关闭连接即可
PORT模式:
1)在本地启动某个端口的监听(本地作为服务端,使用ServerSocket)
2)通过命令cmdSocket套接字发送PORT,PORT命令后加参数:本地ip+刚启动监听的端口
3)server端响应200 
4)在cmdSocket上发送LIST命令
5)调用ServerSocket.accept()获得数据套接字dataSocket(ftp server作为客户连接本地的端口)
6)server端通过cmdSocket返回150 开头的响应(需要读取cmdSocket)
7)本地通过dataSocket接收数据,即通过dataSocket的inputStream读取dataSocket中的数据
8)传输完毕(read返回-1),cmdSocket会返回226 开头的响应,关闭连接即可
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值