Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import java.io.BufferedReader;
- import java.io.IOException;
- import java.io.InputStreamReader;
- import java.io.PrintWriter;
- import java.net.Socket;
- import java.util.stream.Stream;
- /**
- * Created by ubuntu on 11/24/16.
- */
- public class FtpClient {
- private Socket controlSocket;
- private String address;
- private String username;
- private String password;
- public FtpClient(String address) {
- this(address, "anonymous", "");
- }
- public FtpClient(String address, String username, String password) {
- this.address = address;
- this.username = username;
- this.password = password;
- try {
- controlSocket = new Socket(address, 21);
- } catch (IOException e) {
- // TODO
- e.printStackTrace();
- }
- }
- public boolean connect() throws IOException {
- String returnCode;
- send("");
- returnCode = send("USER " + username);
- // 331 = User name okay, need password.
- if(!returnCode.contains("331")) return false;
- returnCode = send("PASS " + password);
- // 230 = Login successful.
- return returnCode.contains("230");
- }
- public void enterPasv() throws IOException {
- String returnedMsg = send("PASV");
- // 227 Entering Passive Mode (90,130,70,73,96,29)
- if(returnedMsg.contains("227")) {
- // TODO..
- try {
- new Socket("90.130.70.73", getPort(returnedMsg));
- } catch (IOException e) {
- e.printStackTrace();
- }
- }
- }
- private int getPort(String message) {
- int i = message.indexOf("(") + 1;
- int j = message.indexOf(")");
- String[] arrayPasv = message.substring(i, j).split(",");
- int p1 = Integer.parseInt(arrayPasv[4]);
- int p2 = Integer.parseInt(arrayPasv[5]);
- return Integer.decode(
- "0x" + Integer.toHexString(p1) + Integer.toHexString(p2));
- }
- public String send(String message) throws IOException {
- return send(message, true);
- }
- public String send(String message, boolean waitAnswer) throws IOException {
- // First sends the packet
- PrintWriter out = new PrintWriter(controlSocket.getOutputStream(), true);
- out.println(message);
- System.out.println("Sending message to the server: " + message);
- // If the packet has any answer returns it...
- if(waitAnswer) {
- BufferedReader reader = new BufferedReader(new InputStreamReader(controlSocket.getInputStream()));
- String msg = reader.readLine();
- System.out.println("Returned message: " + msg);
- return msg;
- }
- return "";
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement