私の問題は、私が FTP クライアントを作成していることです。これまでのところ、1 つの細かい点を除けば問題なく動作しており、それが私を悩ませ続けています。FTP ウェルカム メッセージが何行にまたがるかを知る必要があります...そして、これは受け入れられません!
private Socket connection;
private PrintWriter outStream;
private Scanner inStream;
public void InitiateConnection() throws IOException
{
log.Info(this, "Initiating connection to host: " + host + ":" + port);
connection = new Socket(host, port);
log.Info(this, "Connection initiated.");
outStream = new PrintWriter(connection.getOutputStream(), true);
inStream = new Scanner(connection.getInputStream());
Listen();
Listen();
Listen();
}
public String Listen() throws IOException
{
if(connection == null)
throw new IOException("Connection not initiated yet");
String response = inStream.nextLine();
log.Info(this, "Response: " + response);
return response;
}
これは簡単なセットアップです。私の問題とは関係がないため、他のすべてのコードを省略しました。
これを達成するために、私は複数のことを試みました。失敗した解決策 1:
String response = "";
while(response != null)
Listen();
失敗した解決策 2:
while(connection.getInputStream().available > 0)
Listen();
そして数え切れないほどの他の...しかし、それが機能しないか、メソッドがブロックされて新しい入力を待ちます。タイムアウトを試してみましたが、それも問題なく機能しません。この問題の適切な解決策ではありません...
行数を知らなくても、FTPサーバーからウェルカムメッセージ全体を取得できる必要があります...したがって、両方とも取得できます。
Response: 220-FileZilla Server version 0.9.39 beta
Response: 220-written by Tim Kosse (Tim.Kosse@gmx.de)
Response: 220 Please visit http://sourceforge.net/projects/filezilla/
この:
Response: 220-FileZilla Server version 0.9.40 beta
Response: 220 Welcome to Andrés FTP Server