|
|
@ -29,8 +29,9 @@ public class ServerP2P {
|
|
|
|
* @param portServer binded port
|
|
|
|
* @param portServer binded port
|
|
|
|
* @param hostnameTracker tracker hostname
|
|
|
|
* @param hostnameTracker tracker hostname
|
|
|
|
* @param portTracker tracker port
|
|
|
|
* @param portTracker tracker port
|
|
|
|
|
|
|
|
* @param isInteractive true if application in interactive mode
|
|
|
|
*/
|
|
|
|
*/
|
|
|
|
public ServerP2P(String hostnameServer, int portServer, String hostnameTracker, int portTracker) {
|
|
|
|
public ServerP2P(String hostnameServer, int portServer, String hostnameTracker, int portTracker, boolean isInteractive) {
|
|
|
|
Scanner scanner = new Scanner(System.in);
|
|
|
|
Scanner scanner = new Scanner(System.in);
|
|
|
|
server = new HostItem(hostnameServer, portServer);
|
|
|
|
server = new HostItem(hostnameServer, portServer);
|
|
|
|
tracker = new HostItem(hostnameTracker, portTracker);
|
|
|
|
tracker = new HostItem(hostnameTracker, portTracker);
|
|
|
@ -38,7 +39,9 @@ public class ServerP2P {
|
|
|
|
directories.createSubdir(subdir);
|
|
|
|
directories.createSubdir(subdir);
|
|
|
|
logger = new Logger(directories.getDataHomeDirectory() + "server.log");
|
|
|
|
logger = new Logger(directories.getDataHomeDirectory() + "server.log");
|
|
|
|
System.out.println("Server will listen on port " + portServer + " and serve files from " + directories.getDataHomeDirectory() + subdir);
|
|
|
|
System.out.println("Server will listen on port " + portServer + " and serve files from " + directories.getDataHomeDirectory() + subdir);
|
|
|
|
|
|
|
|
if (isInteractive) {
|
|
|
|
directories.askOpenDataHomeDirectory(subdir, scanner);
|
|
|
|
directories.askOpenDataHomeDirectory(subdir, scanner);
|
|
|
|
|
|
|
|
}
|
|
|
|
scanner.close();
|
|
|
|
scanner.close();
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
@ -56,66 +59,60 @@ public class ServerP2P {
|
|
|
|
String hostnameTracker = "";
|
|
|
|
String hostnameTracker = "";
|
|
|
|
int portTracker = 0;
|
|
|
|
int portTracker = 0;
|
|
|
|
Scanner scanner = new Scanner(System.in);
|
|
|
|
Scanner scanner = new Scanner(System.in);
|
|
|
|
|
|
|
|
boolean isInteractive = false;
|
|
|
|
|
|
|
|
|
|
|
|
if ((args.length != 5) && (args.length != 0)){
|
|
|
|
if ((args.length != 5) && (args.length != 0)) {
|
|
|
|
System.out.println("usage : java serveurP2P.ServeurP2P (interactive) or java serveurP2P.ServeurP2P -- <serveurHOSTNAME> <serveurPORT> <trackerHOSTNAME> <trackerPORT> (" + serverPortRange + " and " + trackerPortRange +")");
|
|
|
|
System.out.println("usage : java serveurP2P.ServeurP2P (interactive) or java serveurP2P.ServeurP2P -- <serveurHOSTNAME> <serveurPORT> <trackerHOSTNAME> <trackerPORT> (" + serverPortRange + " and " + trackerPortRange +")");
|
|
|
|
System.exit(1);
|
|
|
|
System.exit(1);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
else if(args.length == 5){
|
|
|
|
else if (args.length == 5) {
|
|
|
|
|
|
|
|
isInteractive = false;
|
|
|
|
hostnameServer = args[1];
|
|
|
|
hostnameServer = args[1];
|
|
|
|
portServer = Integer.valueOf(Integer.parseInt(args[2]));
|
|
|
|
portServer = Integer.valueOf(Integer.parseInt(args[2]));
|
|
|
|
hostnameTracker = args[3];
|
|
|
|
hostnameTracker = args[3];
|
|
|
|
portTracker = Integer.valueOf(Integer.parseInt(args[4]));
|
|
|
|
portTracker = Integer.valueOf(Integer.parseInt(args[4]));
|
|
|
|
} else {
|
|
|
|
} else {
|
|
|
|
|
|
|
|
isInteractive = true;
|
|
|
|
|
|
|
|
// configure application
|
|
|
|
System.out.println("Server, enter hostname to bind (default = localhost): ");
|
|
|
|
System.out.println("Server, enter hostname to bind (default = localhost): ");
|
|
|
|
hostnameServer = scanner.nextLine();
|
|
|
|
hostnameServer = scanner.nextLine();
|
|
|
|
if(hostnameServer.equals("")){
|
|
|
|
if (hostnameServer.equals("")) {
|
|
|
|
hostnameServer = defaultHostname;
|
|
|
|
hostnameServer = defaultHostname;
|
|
|
|
System.out.println("using default hostname : " + hostnameServer);
|
|
|
|
System.out.println("using default hostname : " + hostnameServer);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
System.out.println("enter port (default = " + serverPortRange.getDefaultPort() + "): ");
|
|
|
|
System.out.println("Enter port (default = " + serverPortRange.getDefaultPort() + "): ");
|
|
|
|
String portServerStr = scanner.nextLine();
|
|
|
|
String portServerStr = scanner.nextLine();
|
|
|
|
if(portServerStr.equals("")){
|
|
|
|
if (portServerStr.equals("")) {
|
|
|
|
portServer = serverPortRange.getDefaultPort();
|
|
|
|
portServer = serverPortRange.getDefaultPort();
|
|
|
|
System.out.println("using default port : " + portServer);
|
|
|
|
System.out.println("using default port : " + portServer);
|
|
|
|
} else {
|
|
|
|
} else {
|
|
|
|
portServer = Integer.valueOf(Integer.parseInt(portServerStr));
|
|
|
|
portServer = Integer.valueOf(Integer.parseInt(portServerStr));
|
|
|
|
}
|
|
|
|
}
|
|
|
|
System.out.println("enter hostname of tracker (default = localhost): ");
|
|
|
|
// configure tracker
|
|
|
|
|
|
|
|
System.out.println("Enter hostname of tracker (default = localhost): ");
|
|
|
|
hostnameTracker = scanner.nextLine();
|
|
|
|
hostnameTracker = scanner.nextLine();
|
|
|
|
if(hostnameTracker.equals("")){
|
|
|
|
if (hostnameTracker.equals("")) {
|
|
|
|
hostnameTracker = defaultHostname;
|
|
|
|
hostnameTracker = defaultHostname;
|
|
|
|
System.out.println("tracker default hostname : " + hostnameTracker);
|
|
|
|
System.out.println("tracker default hostname : " + hostnameTracker);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
System.out.println("enter tracker's port (default = " + trackerPortRange.getDefaultPort() + "): ");
|
|
|
|
System.out.println("Enter tracker's port (default = " + trackerPortRange.getDefaultPort() + "): ");
|
|
|
|
String portTrackerStr = scanner.nextLine();
|
|
|
|
String portTrackerStr = scanner.nextLine();
|
|
|
|
if(portTrackerStr.equals("")){
|
|
|
|
if (portTrackerStr.equals("")) {
|
|
|
|
portTracker = serverPortRange.getDefaultPort();
|
|
|
|
portTracker = trackerPortRange.getDefaultPort();
|
|
|
|
System.out.println("using default port : " + portTracker);
|
|
|
|
System.out.println("using default port : " + portTracker);
|
|
|
|
} else {
|
|
|
|
} else {
|
|
|
|
portTracker = Integer.valueOf(Integer.parseInt(portTrackerStr));
|
|
|
|
portTracker = Integer.valueOf(Integer.parseInt(portTrackerStr));
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
boolean serverInRange = serverPortRange.isPortInRange(portServer);
|
|
|
|
|
|
|
|
boolean trackerInRange = trackerPortRange.isPortInRange(portTracker);
|
|
|
|
|
|
|
|
if (serverInRange && trackerInRange) {
|
|
|
|
System.out.println("using hostname : " + hostnameServer);
|
|
|
|
System.out.println("using hostname : " + hostnameServer);
|
|
|
|
if(serverPortRange.isPortInRange(portServer)) {
|
|
|
|
|
|
|
|
System.out.println("using port : " + portServer);
|
|
|
|
System.out.println("using port : " + portServer);
|
|
|
|
}
|
|
|
|
|
|
|
|
else {
|
|
|
|
|
|
|
|
System.out.println("Port not in range. " + serverPortRange);
|
|
|
|
|
|
|
|
portServer = serverPortRange.getDefaultPort();
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
System.out.println("tracker hostname : " + hostnameTracker);
|
|
|
|
System.out.println("tracker hostname : " + hostnameTracker);
|
|
|
|
|
|
|
|
System.out.println("tracker port : " + portTracker);
|
|
|
|
if(trackerPortRange.isPortInRange(portTracker)) {
|
|
|
|
ServerP2P s = new ServerP2P(hostnameServer, portServer, hostnameTracker, portTracker, isInteractive);
|
|
|
|
System.out.println("using port : " + portTracker);
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
else {
|
|
|
|
|
|
|
|
System.out.println("Port not in range. " + trackerPortRange);
|
|
|
|
|
|
|
|
portTracker = trackerPortRange.getDefaultPort();
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
ServerP2P s = new ServerP2P(hostnameServer, portServer, hostnameTracker, portTracker);
|
|
|
|
|
|
|
|
ServerManagementUDP smudp = new ServerManagementUDP(s.directories.getDataHomeDirectory() + subdir, s.server, s.tracker, s.logger);
|
|
|
|
ServerManagementUDP smudp = new ServerManagementUDP(s.directories.getDataHomeDirectory() + subdir, s.server, s.tracker, s.logger);
|
|
|
|
ServerManagementTCP smtcp = new ServerManagementTCP(s.directories.getDataHomeDirectory() + subdir, s.server, s.tracker, s.logger);
|
|
|
|
ServerManagementTCP smtcp = new ServerManagementTCP(s.directories.getDataHomeDirectory() + subdir, s.server, s.tracker, s.logger);
|
|
|
|
Thread tudp = new Thread(smudp);
|
|
|
|
Thread tudp = new Thread(smudp);
|
|
|
@ -124,5 +121,14 @@ public class ServerP2P {
|
|
|
|
Thread ttcp = new Thread(smtcp);
|
|
|
|
Thread ttcp = new Thread(smtcp);
|
|
|
|
ttcp.setName("server TCP P2P-JAVA-PROJECT");
|
|
|
|
ttcp.setName("server TCP P2P-JAVA-PROJECT");
|
|
|
|
ttcp.start();
|
|
|
|
ttcp.start();
|
|
|
|
|
|
|
|
} else {
|
|
|
|
|
|
|
|
if (!serverInRange) {
|
|
|
|
|
|
|
|
System.err.println("SERVER: Port not in range. " + serverPortRange);
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
if (!trackerInRange) {
|
|
|
|
|
|
|
|
System.err.println("TRACKER: Port not in range. " + trackerPortRange);
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
System.exit(2);
|
|
|
|
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|