programs quit when ports entered are wrong (#97)
All checks were successful
flavien's git/Projet_JAVA_P2P_STRI2A/pipeline/head This commit looks good
All checks were successful
flavien's git/Projet_JAVA_P2P_STRI2A/pipeline/head This commit looks good
Fix #93. - Programs quit when ports entered are wrong. Fix #94. - Server doesnt ask to open his home directory when arguments are passed. - Tracker doesnt ask to open his home directory when arguments are passed. Co-authored-by: Louis Royer <louis.royer@univ-tlse3.fr> Co-authored-by: flavien <flavien.haas@outlook.fr> Co-authored-by: js_auge <auge1@hotmail.fr>
This commit is contained in:
parent
dfde8d4527
commit
c2d05aeeb9
@ -89,28 +89,28 @@ public class ClientP2P {
|
||||
final ServerPortRange serverPortRange = new ServerPortRange();
|
||||
final TrackerPortRange trackerPortRange = new TrackerPortRange();
|
||||
|
||||
if ((args.length != 6) && (args.length != 0)){
|
||||
if ((args.length != 6) && (args.length != 0)) {
|
||||
ClientP2P.printUsage(serverPortRange, trackerPortRange);
|
||||
System.exit(1);
|
||||
}
|
||||
else if(args.length == 6){
|
||||
else if (args.length == 6) {
|
||||
protocolClient = args[1];
|
||||
hostnameServer = args[2];
|
||||
portServer = Integer.valueOf(Integer.parseInt(args[3]));
|
||||
hostnameTracker = args[4];
|
||||
portTracker = Integer.valueOf(Integer.parseInt(args[5]));
|
||||
} else{
|
||||
} else {
|
||||
System.out.println("Client, wich transport protocol do you want to use (default = TCP): ");
|
||||
protocolClient = scanner.nextLine();
|
||||
System.out.println("server side, enter hostname to bind (default = localhost): ");
|
||||
hostnameServer = scanner.nextLine();
|
||||
if(hostnameServer.equals("")){
|
||||
if (hostnameServer.equals("")) {
|
||||
hostnameServer = defaultHostname;
|
||||
System.out.println("using default hostname : " + hostnameServer);
|
||||
}
|
||||
System.out.println("enter port (default = " + serverPortRange.getDefaultPort() +"): ");
|
||||
String portServerStr = scanner.nextLine();
|
||||
if(portServerStr.equals("")){
|
||||
if (portServerStr.equals("")) {
|
||||
portServer = serverPortRange.getDefaultPort();
|
||||
System.out.println("using default port : " + portServer);
|
||||
} else {
|
||||
@ -118,13 +118,13 @@ public class ClientP2P {
|
||||
}
|
||||
System.out.println("enter hostname of tracker (default = localhost): ");
|
||||
hostnameTracker = scanner.nextLine();
|
||||
if(hostnameTracker.equals("")){
|
||||
if (hostnameTracker.equals("")) {
|
||||
hostnameTracker = defaultHostname;
|
||||
System.out.println("tracker default hostname : " + hostnameTracker);
|
||||
}
|
||||
System.out.println("enter tracker's port (default = "+trackerPortRange.getDefaultPort() + "): ");
|
||||
String portTrackerStr = scanner.nextLine();
|
||||
if(portTrackerStr.equals("")){
|
||||
if (portTrackerStr.equals("")) {
|
||||
portTracker = trackerPortRange.getDefaultPort();
|
||||
System.out.println("using default port : " + portTracker);
|
||||
} else {
|
||||
@ -132,68 +132,66 @@ public class ClientP2P {
|
||||
}
|
||||
}
|
||||
|
||||
System.out.println("using hostname : " + hostnameServer);
|
||||
if(serverPortRange.isPortInRange(portServer)){
|
||||
boolean serverInRange = serverPortRange.isPortInRange(portServer);
|
||||
boolean trackerInRange = trackerPortRange.isPortInRange(portTracker);
|
||||
|
||||
if (serverInRange && trackerInRange) {
|
||||
System.out.println("using hostname : " + hostnameServer);
|
||||
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);
|
||||
ClientP2P c = new ClientP2P(hostnameServer, portServer, hostnameTracker, portTracker);
|
||||
ServerManagementUDP smudp = new ServerManagementUDP(c.directories.getDataHomeDirectory(), c.server, c.tracker, c.loggerServer);
|
||||
ServerManagementTCP smtcp = new ServerManagementTCP(c.directories.getDataHomeDirectory(), c.server, c.tracker, c.loggerServer);
|
||||
Thread tudp = new Thread(smudp);
|
||||
tudp.setName("server UDP P2P-JAVA-PROJECT");
|
||||
tudp.start();
|
||||
Thread ttcp = new Thread(smtcp);
|
||||
ttcp.setName("server TCP P2P-JAVA-PROJECT");
|
||||
ttcp.start();
|
||||
|
||||
if(trackerPortRange.isPortInRange(portTracker)){
|
||||
System.out.println("using port : " + portTracker);
|
||||
}
|
||||
else {
|
||||
System.out.println("Port not in range. " + trackerPortRange);
|
||||
portTracker = trackerPortRange.getDefaultPort();
|
||||
}
|
||||
// Wait a bit before printing client interface
|
||||
// This is not required, but allow to have a cleaner interface
|
||||
try {
|
||||
Thread.sleep(200);
|
||||
} catch (InterruptedException e) {
|
||||
Thread.currentThread().interrupt();
|
||||
}
|
||||
|
||||
ClientP2P c = new ClientP2P(hostnameServer, portServer, hostnameTracker, portTracker);
|
||||
|
||||
ServerManagementUDP smudp = new ServerManagementUDP(c.directories.getDataHomeDirectory(), c.server, c.tracker, c.loggerServer);
|
||||
ServerManagementTCP smtcp = new ServerManagementTCP(c.directories.getDataHomeDirectory(), c.server, c.tracker, c.loggerServer);
|
||||
Thread tudp = new Thread(smudp);
|
||||
tudp.setName("server UDP P2P-JAVA-PROJECT");
|
||||
tudp.start();
|
||||
Thread ttcp = new Thread(smtcp);
|
||||
ttcp.setName("server TCP P2P-JAVA-PROJECT");
|
||||
ttcp.start();
|
||||
|
||||
// Wait a bit before printing client interface
|
||||
// This is not required, but allow to have a cleaner interface
|
||||
try {
|
||||
Thread.sleep(200);
|
||||
} catch(InterruptedException e) {
|
||||
Thread.currentThread().interrupt();
|
||||
Thread tclient;
|
||||
switch (protocolClient) {
|
||||
case "UDP":
|
||||
case "udp":
|
||||
case "upd": // to avoid users typos
|
||||
case "2" :
|
||||
System.out.println("Starting with UDP");
|
||||
ClientManagementUDP cmudp = new ClientManagementUDP(c.directories.getDataHomeDirectory(), c.tracker, c.directories.getDataHomeDirectory() + c.partsDir, c.loggerClient, c.scanner, c.server);
|
||||
tclient = new Thread(cmudp);
|
||||
break;
|
||||
case "TCP":
|
||||
case "tcp":
|
||||
case "1":
|
||||
default:
|
||||
System.out.println("Starting with TCP");
|
||||
ClientManagementTCP cmtcp = new ClientManagementTCP(c.directories.getDataHomeDirectory(), c.tracker, c.directories.getDataHomeDirectory() + c.partsDir, c.loggerClient, c.scanner, c.server);
|
||||
tclient = new Thread(cmtcp);
|
||||
break;
|
||||
}
|
||||
tclient.setName("client P2P-JAVA-PROJECT");
|
||||
tclient.start();
|
||||
try {
|
||||
tclient.join();
|
||||
} catch (InterruptedException e) {}
|
||||
smudp.setStop();
|
||||
smtcp.setStop();
|
||||
} 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);
|
||||
}
|
||||
|
||||
Thread tclient;
|
||||
switch(protocolClient){
|
||||
case "UDP":
|
||||
case "udp":
|
||||
case "upd": // to avoid users typos
|
||||
case "2" :
|
||||
System.out.println("Starting with UDP");
|
||||
ClientManagementUDP cmudp = new ClientManagementUDP(c.directories.getDataHomeDirectory(), c.tracker, c.directories.getDataHomeDirectory() + c.partsDir, c.loggerClient, c.scanner, c.server);
|
||||
tclient = new Thread(cmudp);
|
||||
break;
|
||||
case "TCP":
|
||||
case "tcp":
|
||||
case "1":
|
||||
default:
|
||||
System.out.println("Starting with TCP");
|
||||
ClientManagementTCP cmtcp = new ClientManagementTCP(c.directories.getDataHomeDirectory(), c.tracker, c.directories.getDataHomeDirectory() + c.partsDir, c.loggerClient, c.scanner, c.server);
|
||||
tclient = new Thread(cmtcp);
|
||||
break;
|
||||
}
|
||||
tclient.setName("client P2P-JAVA-PROJECT");
|
||||
tclient.start();
|
||||
try {
|
||||
tclient.join();
|
||||
} catch (InterruptedException e) {}
|
||||
smudp.setStop();
|
||||
smtcp.setStop();
|
||||
}
|
||||
}
|
||||
|
@ -29,8 +29,9 @@ public class ServerP2P {
|
||||
* @param portServer binded port
|
||||
* @param hostnameTracker tracker hostname
|
||||
* @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);
|
||||
server = new HostItem(hostnameServer, portServer);
|
||||
tracker = new HostItem(hostnameTracker, portTracker);
|
||||
@ -38,7 +39,9 @@ public class ServerP2P {
|
||||
directories.createSubdir(subdir);
|
||||
logger = new Logger(directories.getDataHomeDirectory() + "server.log");
|
||||
System.out.println("Server will listen on port " + portServer + " and serve files from " + directories.getDataHomeDirectory() + subdir);
|
||||
directories.askOpenDataHomeDirectory(subdir, scanner);
|
||||
if (isInteractive) {
|
||||
directories.askOpenDataHomeDirectory(subdir, scanner);
|
||||
}
|
||||
scanner.close();
|
||||
}
|
||||
|
||||
@ -56,73 +59,76 @@ public class ServerP2P {
|
||||
String hostnameTracker = "";
|
||||
int portTracker = 0;
|
||||
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.exit(1);
|
||||
}
|
||||
else if(args.length == 5){
|
||||
hostnameServer = args[1];
|
||||
portServer = Integer.valueOf(Integer.parseInt(args[2]));
|
||||
hostnameTracker = args[3];
|
||||
portTracker = Integer.valueOf(Integer.parseInt(args[4]));
|
||||
else if (args.length == 5) {
|
||||
isInteractive = false;
|
||||
hostnameServer = args[1];
|
||||
portServer = Integer.valueOf(Integer.parseInt(args[2]));
|
||||
hostnameTracker = args[3];
|
||||
portTracker = Integer.valueOf(Integer.parseInt(args[4]));
|
||||
} else {
|
||||
isInteractive = true;
|
||||
// configure application
|
||||
System.out.println("Server, enter hostname to bind (default = localhost): ");
|
||||
hostnameServer = scanner.nextLine();
|
||||
if(hostnameServer.equals("")){
|
||||
if (hostnameServer.equals("")) {
|
||||
hostnameServer = defaultHostname;
|
||||
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();
|
||||
if(portServerStr.equals("")){
|
||||
if (portServerStr.equals("")) {
|
||||
portServer = serverPortRange.getDefaultPort();
|
||||
System.out.println("using default port : " + portServer);
|
||||
} else {
|
||||
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();
|
||||
if(hostnameTracker.equals("")){
|
||||
if (hostnameTracker.equals("")) {
|
||||
hostnameTracker = defaultHostname;
|
||||
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();
|
||||
if(portTrackerStr.equals("")){
|
||||
portTracker = serverPortRange.getDefaultPort();
|
||||
if (portTrackerStr.equals("")) {
|
||||
portTracker = trackerPortRange.getDefaultPort();
|
||||
System.out.println("using default port : " + portTracker);
|
||||
} else {
|
||||
portTracker = Integer.valueOf(Integer.parseInt(portTrackerStr));
|
||||
}
|
||||
}
|
||||
|
||||
System.out.println("using hostname : " + hostnameServer);
|
||||
if(serverPortRange.isPortInRange(portServer)) {
|
||||
boolean serverInRange = serverPortRange.isPortInRange(portServer);
|
||||
boolean trackerInRange = trackerPortRange.isPortInRange(portTracker);
|
||||
if (serverInRange && trackerInRange) {
|
||||
System.out.println("using hostname : " + hostnameServer);
|
||||
System.out.println("using port : " + portServer);
|
||||
System.out.println("tracker hostname : " + hostnameTracker);
|
||||
System.out.println("tracker port : " + portTracker);
|
||||
ServerP2P s = new ServerP2P(hostnameServer, portServer, hostnameTracker, portTracker, isInteractive);
|
||||
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);
|
||||
Thread tudp = new Thread(smudp);
|
||||
tudp.setName("server UDP P2P-JAVA-PROJECT");
|
||||
tudp.start();
|
||||
Thread ttcp = new Thread(smtcp);
|
||||
ttcp.setName("server TCP P2P-JAVA-PROJECT");
|
||||
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);
|
||||
}
|
||||
else {
|
||||
System.out.println("Port not in range. " + serverPortRange);
|
||||
portServer = serverPortRange.getDefaultPort();
|
||||
}
|
||||
System.out.println("tracker hostname : " + hostnameTracker);
|
||||
|
||||
if(trackerPortRange.isPortInRange(portTracker)) {
|
||||
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);
|
||||
ServerManagementTCP smtcp = new ServerManagementTCP(s.directories.getDataHomeDirectory() + subdir, s.server, s.tracker, s.logger);
|
||||
Thread tudp = new Thread(smudp);
|
||||
tudp.setName("server UDP P2P-JAVA-PROJECT");
|
||||
tudp.start();
|
||||
Thread ttcp = new Thread(smtcp);
|
||||
ttcp.setName("server TCP P2P-JAVA-PROJECT");
|
||||
ttcp.start();
|
||||
}
|
||||
}
|
||||
|
@ -24,14 +24,17 @@ public class Tracker {
|
||||
/** Constructor with portStr containing a port number.
|
||||
* @param hostname hostname to bind
|
||||
* @param port port to bind
|
||||
* @param isInteractive true if application is in interactive mode
|
||||
*/
|
||||
public Tracker(String hostname, int port) {
|
||||
public Tracker(String hostname, int port, boolean isInteractive) {
|
||||
tracker = new HostItem(hostname, port);
|
||||
directories = new Directories("P2P_JAVA_PROJECT_TRACKER_" + port);
|
||||
logger = new Logger(directories.getDataHomeDirectory() + "tracker.log");
|
||||
System.out.println("Tracker will listen on port " + port + " and write logs into " + directories.getDataHomeDirectory());
|
||||
Scanner scanner = new Scanner(System.in);
|
||||
directories.askOpenDataHomeDirectory(null, scanner);
|
||||
if (isInteractive) {
|
||||
directories.askOpenDataHomeDirectory(null, scanner);
|
||||
}
|
||||
scanner.close();
|
||||
}
|
||||
|
||||
@ -47,23 +50,26 @@ public class Tracker {
|
||||
String hostname = "";
|
||||
int port = 0;
|
||||
Tracker t;
|
||||
boolean isInteractive = false;
|
||||
|
||||
if ((args.length != 3) && (args.length != 0)){
|
||||
if ((args.length != 3) && (args.length != 0)) {
|
||||
System.out.println("usage : java tracker.Tracker (interactive) or java trackerP2P.trackerP2P -- <hostname> <PORT> (" + trackerPortRange +")");
|
||||
System.exit(1);
|
||||
} else if (args.length == 3){
|
||||
hostname = args[1];
|
||||
port = Integer.valueOf(Integer.parseInt(args[2]));
|
||||
} else if (args.length == 3) {
|
||||
isInteractive = false;
|
||||
hostname = args[1];
|
||||
port = Integer.valueOf(Integer.parseInt(args[2]));
|
||||
} else {
|
||||
isInteractive = true;
|
||||
System.out.println("Tracker Server, enter hostname to bind (default = localhost): ");
|
||||
hostname = scanner.nextLine();
|
||||
if(hostname.equals("")){
|
||||
if (hostname.equals("")) {
|
||||
hostname = defaultHostname;
|
||||
System.out.println("using default hostname : " + hostname);
|
||||
}
|
||||
System.out.println("enter port (default = " + trackerPortRange.getDefaultPort() +"): ");
|
||||
String portStr = scanner.nextLine();
|
||||
if(portStr.equals("")){
|
||||
if (portStr.equals("")) {
|
||||
port = trackerPortRange.getDefaultPort();
|
||||
System.out.println("using default port : " + port);
|
||||
} else {
|
||||
@ -72,22 +78,20 @@ public class Tracker {
|
||||
}
|
||||
|
||||
System.out.println("using hostname : " + hostname);
|
||||
if(trackerPortRange.isPortInRange(port)) {
|
||||
if (trackerPortRange.isPortInRange(port)) {
|
||||
System.out.println("using port : " + port);
|
||||
t = new Tracker(hostname, port);
|
||||
}
|
||||
else {
|
||||
t = new Tracker(hostname, port, isInteractive);
|
||||
TrackerManagementUDP tmudp = new TrackerManagementUDP(t.tracker, t.logger);
|
||||
TrackerManagementTCP tmtcp = new TrackerManagementTCP(t.tracker, t.logger);
|
||||
Thread tudp = new Thread(tmudp);
|
||||
tudp.setName("Tracker UDP P2P-JAVA-PROJECT");
|
||||
tudp.start();
|
||||
Thread ttcp = new Thread(tmtcp);
|
||||
ttcp.setName("Tracker TCP P2P-JAVA-PROJECT");
|
||||
ttcp.start();
|
||||
} else {
|
||||
System.out.println("Port not in range. " + trackerPortRange);
|
||||
t = new Tracker(hostname, trackerPortRange.getDefaultPort());
|
||||
System.exit(2);
|
||||
}
|
||||
|
||||
TrackerManagementUDP tmudp = new TrackerManagementUDP(t.tracker, t.logger);
|
||||
TrackerManagementTCP tmtcp = new TrackerManagementTCP(t.tracker, t.logger);
|
||||
Thread tudp = new Thread(tmudp);
|
||||
tudp.setName("Tracker UDP P2P-JAVA-PROJECT");
|
||||
tudp.start();
|
||||
Thread ttcp = new Thread(tmtcp);
|
||||
ttcp.setName("Tracker TCP P2P-JAVA-PROJECT");
|
||||
ttcp.start();
|
||||
}
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user