2011-09-16 15 views
-1

私は、Windowsでfilezillaを使用してftpサーバーを実行しています。私はそれに接続することができますが、ファイルをアップロードしたり、ファイルをリストアップしようとすると、例外が発生します。私は、このページから、私は私のようなclient.storeFile()に当たるときは、次のjava ftp file upload

(000032)9/16/2011 14:38:28 PM - (not logged in) (127.0.0.1)> Connected, sending welcome message... 
(000032)9/16/2011 14:38:28 PM - (not logged in) (127.0.0.1)> 220-FileZilla Server version 0.9.39 beta 
(000032)9/16/2011 14:38:28 PM - (not logged in) (127.0.0.1)> 220-written by Tim Kosse ([email protected]) 
(000032)9/16/2011 14:38:28 PM - (not logged in) (127.0.0.1)> 220 Please visit http://sourceforge.net/projects/filezilla/ 
(000032)9/16/2011 14:38:28 PM - (not logged in) (127.0.0.1)> USER reverb0253 
(000032)9/16/2011 14:38:28 PM - (not logged in) (127.0.0.1)> 331 Password required for reverb0253 
(000032)9/16/2011 14:38:28 PM - (not logged in) (127.0.0.1)> PASS ******** 
(000032)9/16/2011 14:38:28 PM - reverb0253 (127.0.0.1)> 230 Logged on 
(000032)9/16/2011 14:38:40 PM - reverb0253 (127.0.0.1)> disconnected. 

が右、サーバーのログが切断ご覧サーバログでhttp://www.kodejava.org/examples/357.html

Login success... 
java.net.SocketException: Software caused connection abort: socket write error 
at java.net.SocketOutputStream.socketWrite0(Native Method) 
at java.net.SocketOutputStream.socketWrite(SocketOutputStream.java:109) 
at java.net.SocketOutputStream.write(SocketOutputStream.java:153) 
at sun.nio.cs.StreamEncoder.writeBytes(StreamEncoder.java:221) 
at sun.nio.cs.StreamEncoder.implFlushBuffer(StreamEncoder.java:291) 
at sun.nio.cs.StreamEncoder.implFlush(StreamEncoder.java:295) 
at sun.nio.cs.StreamEncoder.flush(StreamEncoder.java:141) 
at java.io.OutputStreamWriter.flush(OutputStreamWriter.java:229) 
at java.io.BufferedWriter.flush(BufferedWriter.java:254) 
at org.apache.commons.net.ftp.FTP.__send(FTP.java:496) 
at org.apache.commons.net.ftp.FTP.sendCommand(FTP.java:470) 
at org.apache.commons.net.ftp.FTP.sendCommand(FTP.java:547) 
at org.apache.commons.net.ftp.FTP.port(FTP.java:872) 
at org.apache.commons.net.ftp.FTPClient._openDataConnection_(FTPClient.java:667) 
at org.apache.commons.net.ftp.FTPClient.listNames(FTPClient.java:2528) 
at org.apache.commons.net.ftp.FTPClient.listNames(FTPClient.java:2574) 

を例にしようとしていました。私はApacheのコモンズネットを使用しています。3.0.1

答えて

0

ディレクトリリストまたはファイル転送を実行すると、FTPによって別の接続が開きます。ファイアウォールやセキュリティソフトウェアによって接続がブロックされている可能性があります。これは「データチャネル」と呼ばれ、セッション中に正確なポートがネゴシエートされます。私は、データチャネルが開かれる前に、サーバのログにPORTまたはPASVが表示されることを期待しています。送信しているものを正確に見るためには、クライアント側でwiresharkを使用する必要があります。