मेरी समस्या यह है कि मैं एक एफ़टीपी क्लाइंट बना रहा हूं, और अब तक यह एक मामूली विस्तार के अलावा बिना काम कर रहा है, जो मुझे परेशान करता रहता है। मुझे यह जानने की ज़रूरत है कि एफ़टीपी स्वागत संदेश कितने लाइनों पर फैलता है ... और यह स्वीकार्य नहीं हो सकता है!एफ़टीपी स्वागत संदेश के अंत को कैसे जानें
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();
और अनगिनत दूसरों ... लेकिन या तो यह काम नहीं करता, या तरीकों ब्लॉक और नए इनपुट के लिए प्रतीक्षा करें। मैंने टाइमआउट के साथ भी कोशिश की है, लेकिन यह बेकार ढंग से काम नहीं करता है, यह इस समस्या का उचित समाधान नहीं है ...
मुझे बिना किसी जानकारी के एफ़टीपी सर्वर से पूरा स्वागत संदेश प्राप्त करने में सक्षम होना चाहिए
Response: 220-FileZilla Server version 0.9.39 beta
Response: 220-written by Tim Kosse ([email protected])
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
यह * multiline * उत्तर प्रारूप है। उसी खंड से: "एक एफ़टीपी उत्तर में तीन अंकों की संख्या होती है (तीन अल्फान्यूमेरिक वर्णों के रूप में प्रेषित) कुछ पाठ के बाद।" यह spec से स्पष्ट नहीं है लेकिन यदि आप FileZilla स्टार्टअप करते हैं तो आप देखेंगे कि कनेक्ट प्रक्रिया में केवल एमएल प्रतिक्रिया FEAT कमांड पर 211 प्रतिक्रिया है। – linski
तदनुसार अद्यतन करेगा :) – linski