ftp学习之两个套接字

来源:互联网 发布:js脚本秒杀 编辑:程序博客网 时间:2024/04/30 08:24
本地socket连接到服务器21号口后,若发送LIST命令,返回信息是要先设定PASV/PORT模式,需要再开启一个数据链路,然后通过主socket(连接服务器21号)发送LIST命令,并通过新开的数据链路接收数据;
需要有两个套接字,一个用于命令(cmdSocket),一个用于数据(dataSocket)cmdSocket与ftp服务器21端口(如果ftp服务器没做特殊设置的话)连接,dataSocket因PASV和PORT模式不同,而有所差别。PASV模式:1)通过命令cmdSocket套接字发送PASV2)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 开头的响应,关闭连接即可
0 0