home wiki.fukuchiharuki.me
Menu

キーワード

  • FTPClient
  • PASV
  • パッシブモード

現象

FTPClientでFTP/putできない。環境は、ファイアウォールの都合上パッシブモードでしか送信できない。

エラーになるのは次のコード。

client.storeFile(remote, local)

原因

次のコードでパッシブモードにしたつもりだができていない。

client.pasv()

対策

こうすべきだったようです。

client.enterLocalPassiveMode()

備考

tcpdumpすると確かにPORTコマンドを発行してるようでした。

# tcpdump -i lo -A port ftp
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on lo, link-type EN10MB (Ethernet), capture size 96 bytes
~省略~
<%.y<%.yPORT 127,0,0,1,231,155
~省略~
<%.y<%.y200 PORT command successful. C
~省略~
<%.y<%.ySTOR /path/to/file

参考