我的问题是,我要创建一个FTP客户端,到目前为止,它的工作完美无缺,除了一个小细节,那一直缠着我。 我需要知道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