2012-04-27 10 views
0

私は単純なFTPサーバーを実装しています。デバッグ時に、私はサーバーを接続するためにFileZillaクライアントを使用しようとします。コマンドパネルで見つかった要求と応答のパターンは以下の通りである:FTPデータ接続が確立されたときに挨拶またはハンドシェイクが必要ですか?

GREETING: 220 (FTP v1.0) 
REQUEST: USER *** 
RESPONS: 331 Password? 
REQUEST: PASS ******** 
RESPONS: 230 login successfully. 
REQUEST: PWD 
RESPONS: 257 "https://stackoverflow.com/a/" is current directory. 
REQUEST: TYPE I 
RESPONS: 200 Type set to I. 
REQUEST: PASV 
RESPONS: 200 127,255,0,0,175,200(I specify local port 45000) 
REQUEST: LIST 
RESPONS: 150 here is the listing 
RESPONS: 226 Transfer done. 

をただし、エラーが発生し、私は(私は、サーバーを実装して、私はソケット上のストリームを取得することができますので、受動的な接続が実際に確立されたと思わFail to read directroy.を追いましたC#で)。しかし、私はなぜエラーが起こっているのか分かりません。同期サーバーとクライアントに直接データを送信するのではなく、制御接続のような握手情報/挨拶情報を送信する必要があるからですか?はいの場合、この情報のステータスコードは何ですか?

ありがとうございました。

答えて

0

データ接続にはハンドシェイクがありません。

「ディレクトリの読み込みに失敗しました」というエラーは、サーバーが返すフォルダの形式が正しくないために発生しますか?

+0

おそらく、私はテストのためにいくつかのダミーデータを使用し、このモジュールを改良して、再度テストします。ありがとうございました。 –

+0

あなたは正しいです。フォーマットは一つのことです、もう一つは、私はデータ転送が完了した後に接続を開いたままにしておきます。なぜFileZillaがこのポリシーをとっているのか不思議です。たぶんすべての操作が1つのスレッドで完了していますか?時間があればsrcをチェックします。 –