数据传输完毕后数据连接随即关闭
标签:
FTP撑持两种模式,一种方法叫做Standard主动方法,缺省时默认的方法,一种是 Passive 被动方法。?下面介绍一个这两种方法的事情道理:
主动模式:第一步FTP客户端首先随机选择一个大于1024的端口p1,并通过此端口发送请求连接到FTP处事器的21号端口成立TCP连接,在FTP中这个连接叫做控制连接,连接告成成立后,FTP客户端会发送port命令,紧接着FTP客户端会监视本身的p1+1端口,FTP处事器接收到port命令会从本身的20号端口向FTP客户真个p1+1端口倡议请求成立TCP连接,这个连接叫做数据连接,用来发送数据,数据传输完毕后数据连接随即封锁,控制连接连结开启。
被动模式:在成立控制连接的时候和主动模式类似,但成立连接后发送的不是Port命令,而是Pasv命令。FTP处事器收到Pasv命令后,随机打开一个姑且端口(也叫自由端口,端标语大于1023小于65535)并且通知客户端在这个端口上传送数据的请求,FTP客户端发送请求连接FTP处事器此端口,告成成立连接后FTP处事器将通过这个端口进行数据的传送数据传输完毕后数据连接随即封锁,控制连接连结开启。
因为很多防火墙在设置的时候都是不允许接受外部倡议的连接的,所以许多位于防火墙后或内网后的FTP客户端不撑持主动模式,因为处事器无法穿过防火墙或者无法连接到NAT后的客户端。
至此,找到了原因:我是用的本机上开启了防火墙,FTP处事器请求本机的端口被断绝阻止。
解决方案:将ftp模式改削为Passive模式。加上如下代码即可解决上传文件巨细为0的问题
ftp.enterLocalPassiveMode();FTPClient上传文件巨细为0问题
,qq空间回答问题破解温馨提示: 本文由Jm博客推荐,转载请保留链接: https://www.jmwww.net/file/web/29336.html