0

Java で記述された単純な FTP クライアントと proFTP サーバーとの間の FTP セッションに関して、まだいくつかの問題があります。

パッシブ モードを使用してサーバーに接続しました。コマンドを送信するlistと、サーバー上にあるファイルの ASCII で応答が返されます。コマンドを再度送信してlistも、応答がありません。私が送信した他の FTP コマンドからの応答さえ得られません。セッションが「ハング」したようです。

listコマンドを 2 回目に送信すると、単純な Java アプリケーションが応答を受信しなくなるのはなぜですか?

4

1 に答える 1

1

FTP では、アクティブ モードとパッシブ モードの両方が、データ転送用の個別のチャネルを提供します。データの送信を伴うパッシブ モードでコマンドを送信する場合 (例: ) 、データ接続を伴う操作を実行しようとしていることをサーバーに伝えるために、 をlist再送信する必要があります。PASVその後、サーバーは新しいソケットを開くか、同じソケットを引き続き使用できます。

セッションの例を次に示します。

230 Login successful.
PASV
227 Entered Passive Mode (123,245,209,137,199,61)
LIST
150 Here comes the directory listing.
226 Directory send OK.
LIST
425 Use PORT or PASV first.
PASV
227 Entered Passive Mode (123,245,209,137,202,198)
LIST
150 Here comes the directory listing.
226 Directory send OK.

LISTデータ チャネルを開いていなかったため、2 回目の使用が失敗したことに注意してください。別の を送信したら、再びPASV使用できるようになりLISTました。

于 2011-11-15T14:12:11.010 に答える