public String get(String file) throws Exception {
send("SYST");
getResponse();
send("PWD");
getResponse();
send("TYPE I");
getResponse();
String data = "";
if (!passive) {
dataPort++;
int upper = getUpper(dataPort);
int lower = getLower(dataPort);
String ip = InetAddress.getLocalHost().getHostAddress().replace('.', ',');
String ports = ip + "," + upper + "," + lower;
log.info("port:" + ports);
send("PORT " + ports);
getResponse();
dataGrabber grab = new dataGrabber(ip, dataPort);
while (!grab.isPortCreated()) {
}
send("RETR " + file);
String response = in.readLine();
log.info(response);
log.info("" + dataPort);
data = "FTP client - File Not Found";
if (!response.startsWith("5")) {
while (!grab.isDone()) {
}
data = grab.getData();
}
} else {
send("PASV");
String portResp = getResponse();
while (!portResp.startsWith("227")) {
portResp = getResponse();
}
int start = portResp.indexOf('(');
int end = portResp.indexOf(')');
portResp = portResp.substring(start + 1, end);
int a = portResp.indexOf(',');
int b = portResp.indexOf(',', a + 1);
int c = portResp.indexOf(',', b + 1);
int d = portResp.indexOf(',', c + 1);
int e = portResp.indexOf(',', d + 1);
String ip = portResp.substring(0, a) + "." + portResp.substring(a + 1, b) + "."
+ portResp.substring(b + 1, c) + "." + portResp.substring(c + 1, d);
int upper = Integer.parseInt(portResp.substring(d + 1, e));
int lower = Integer.parseInt(portResp.substring(e + 1));
send("RETR " + file);
dataGrabber grab = new dataGrabber(ip, getPort(upper, lower));
getResponse();
while (!grab.isDone()) {
}
data = grab.getData();
}
return data;
}
Get a file from the server. |