add getting file list on one connection
This commit is contained in:
parent
127f000183
commit
78747b1071
@ -12,7 +12,7 @@
|
||||
int main(int argc, char **argv)
|
||||
{
|
||||
const int port = 7332;
|
||||
const char ip[512] = "192.168.0.43";
|
||||
const char ip[512] = "192.168.0.102";
|
||||
struct sockaddr_in endpoint;
|
||||
struct dirent **namelist;
|
||||
char buff[512];
|
||||
|
@ -2,6 +2,7 @@ package ftp.sar.server;
|
||||
|
||||
import ftp.sar.controller.ServerPanelController;
|
||||
|
||||
import java.net.Socket;
|
||||
import java.util.ArrayList;
|
||||
|
||||
public class Server {
|
||||
@ -10,6 +11,16 @@ public class Server {
|
||||
private ArrayList<String> fileList = new ArrayList<>();
|
||||
private ServerPanelController serverPanelController;
|
||||
|
||||
public Socket getSocket() {
|
||||
return socket;
|
||||
}
|
||||
|
||||
public void setSocket(Socket socket) {
|
||||
this.socket = socket;
|
||||
}
|
||||
|
||||
private Socket socket;
|
||||
|
||||
public Server (String ip, int port) {
|
||||
this.ip = ip;
|
||||
this.port = port;
|
||||
|
@ -4,33 +4,49 @@ import ftp.sar.PropertiesLoader;
|
||||
import ftp.sar.exception.CannotConnectException;
|
||||
|
||||
import java.io.*;
|
||||
import java.net.Socket;
|
||||
import java.util.ArrayList;
|
||||
|
||||
public class ServerConnector {
|
||||
private PropertiesLoader propertiesLoader = PropertiesLoader.getInstance();
|
||||
|
||||
ArrayList<String> filterFileList = new ArrayList<String>() {
|
||||
{
|
||||
add(".");
|
||||
add("..");
|
||||
add("server");
|
||||
}
|
||||
};
|
||||
|
||||
public ServerConnector() {
|
||||
}
|
||||
|
||||
public boolean readFileList(Server server) throws CannotConnectException {
|
||||
|
||||
this.sendRequest("GET_ALL_FILES", server);
|
||||
this.sendRequest(server, "GET_ALL_FILES");
|
||||
|
||||
try {
|
||||
Socket socket = new Socket(server.getIp(), server.getPort());
|
||||
DataInputStream dataInputStream = new DataInputStream(socket.getInputStream());
|
||||
DataInputStream dataInputStream = new DataInputStream(server.getSocket().getInputStream());
|
||||
InputStreamReader inputStreamReader = new InputStreamReader(dataInputStream);
|
||||
BufferedReader reader = new BufferedReader(inputStreamReader);
|
||||
|
||||
while (true) {
|
||||
String file = reader.readLine();
|
||||
System.out.println(file);
|
||||
char[] buffer = new char[512];
|
||||
|
||||
if (file == null) {
|
||||
break;
|
||||
reader.read(buffer);
|
||||
|
||||
String file = "";
|
||||
for (char c:buffer) {
|
||||
switch (c) {
|
||||
case '\n':
|
||||
if (!this.filterFileList.contains(file)) {
|
||||
server.addToFileList(file);
|
||||
}
|
||||
file = "";
|
||||
break;
|
||||
case '\u0000':
|
||||
break;
|
||||
default:
|
||||
file += c;
|
||||
}
|
||||
|
||||
server.addToFileList(file);
|
||||
}
|
||||
|
||||
return true;
|
||||
@ -42,20 +58,16 @@ public class ServerConnector {
|
||||
}
|
||||
|
||||
private void sendRequest(
|
||||
String request,
|
||||
Server server
|
||||
) throws CannotConnectException {
|
||||
Socket socket;
|
||||
Server server,
|
||||
String message
|
||||
) throws CannotConnectException {
|
||||
try {
|
||||
socket = new Socket(server.getIp(), server.getPort());
|
||||
DataOutputStream dataOutputStream = new DataOutputStream(socket.getOutputStream());
|
||||
DataOutputStream dataOutputStream = new DataOutputStream(server.getSocket().getOutputStream());
|
||||
OutputStreamWriter outputStreamWriter = new OutputStreamWriter(dataOutputStream);
|
||||
BufferedWriter bufferedWriter = new BufferedWriter(outputStreamWriter);
|
||||
|
||||
bufferedWriter.write(request, 0, request.length());
|
||||
bufferedWriter.write(message, 0, message.length());
|
||||
bufferedWriter.flush();
|
||||
bufferedWriter.close();
|
||||
socket.close();
|
||||
} catch (IOException e) {
|
||||
throw new CannotConnectException();
|
||||
}
|
||||
|
@ -3,6 +3,9 @@ package ftp.sar.server;
|
||||
import ftp.sar.exception.CannotConnectException;
|
||||
import ftp.sar.validator.IpValidator;
|
||||
|
||||
import java.io.IOException;
|
||||
import java.net.Socket;
|
||||
|
||||
public class ServerFactory {
|
||||
|
||||
public Server create(String ip, int port) {
|
||||
@ -14,6 +17,7 @@ public class ServerFactory {
|
||||
|
||||
ServerConnector connector = new ServerConnector();
|
||||
try {
|
||||
this.createConnection(server);
|
||||
connector.readFileList(server);
|
||||
} catch (CannotConnectException e) {
|
||||
e.printStackTrace();
|
||||
@ -22,6 +26,14 @@ public class ServerFactory {
|
||||
return server;
|
||||
}
|
||||
|
||||
private void createConnection(Server server) throws CannotConnectException{
|
||||
try {
|
||||
server.setSocket(new Socket(server.getIp(), server.getPort()));
|
||||
} catch (IOException e) {
|
||||
throw new CannotConnectException();
|
||||
}
|
||||
}
|
||||
|
||||
private Server createServer(String ip, int port) {
|
||||
return new Server(ip, port);
|
||||
}
|
||||
|
Binary file not shown.
Binary file not shown.
Binary file not shown.
Loading…
Reference in New Issue
Block a user