diff --git a/src-client/Client.java b/src-client/Client.java index 80200cb..e5898ef 100644 --- a/src-client/Client.java +++ b/src-client/Client.java @@ -23,10 +23,11 @@ public class Client implements Runnable { if(args.length != 2) { System.out.println("Usage: java Client [server] [port]"); } else { - Client client = new Client(args[0], Integer.parseInt(args[1])); + new Client(args[0], Integer.parseInt(args[1])); } } + // Constructor method public Client(String server, int port) { System.out.println("ConsoleChat client " + version + " Copyright (C) 2014 Nicolás A. Ortega\n" + "This program comes with ABSOLUTELY NO WARRANTY; details in WARRANTY file.\n" + @@ -46,6 +47,7 @@ public class Client implements Runnable { } } + // The run method containing the main loop public void run() { String uinput; while(thread != null) { @@ -64,6 +66,7 @@ public class Client implements Runnable { } } + // Handle messages public void handle(String msg) { if(msg.equals("/quit")) { System.out.println("Goodbye bye. Press RETURN to exit..."); @@ -76,6 +79,7 @@ public class Client implements Runnable { } } + // Open and start all necessary threads private void start() throws IOException { console = new BufferedReader(new InputStreamReader(System.in)); streamOut = new DataOutputStream(socket.getOutputStream()); @@ -87,6 +91,7 @@ public class Client implements Runnable { } } + // Stop and close all necessary threads public void stop() { if(thread != null) { thread.interrupt(); diff --git a/src-client/ClientThread.java b/src-client/ClientThread.java index 247c68d..11b4262 100644 --- a/src-client/ClientThread.java +++ b/src-client/ClientThread.java @@ -16,6 +16,7 @@ public class ClientThread extends Thread { private DataInputStream streamIn = null; private boolean run = false; + // Constructor public ClientThread(Client _client, Socket _socket) { client = _client; socket = _socket; @@ -23,6 +24,7 @@ public class ClientThread extends Thread { start(); } + // Open all necessary streams/threads public void open() { try { streamIn = new DataInputStream(socket.getInputStream()); @@ -33,11 +35,13 @@ public class ClientThread extends Thread { run = true; } + // Close the streams public void close() throws IOException { if(streamIn != null) { streamIn.close(); } run = false; } + // The run method which will be called every frame public void run() { while(run) { try { diff --git a/src-server/Server.java b/src-server/Server.java index f98df95..615b1b0 100644 --- a/src-server/Server.java +++ b/src-server/Server.java @@ -23,10 +23,11 @@ public class Server implements Runnable { if(args.length != 1) { System.out.println("You are using the program incorrectly."); } else { - Server server = new Server(Integer.parseInt(args[0])); + new Server(Integer.parseInt(args[0])); } } + // The constructor method public Server(int port) { System.out.println("ConsoleChat server " + version + " Copyright (C) 2014 Nicolás A. Ortega\n" + "This program comes with ABSOLUTELY NO WARRANTY; details in WARRANTY file.\n" + @@ -43,6 +44,7 @@ public class Server implements Runnable { } } + // The run method that will be called every frame public void run() { while(thread != null) { try { @@ -55,6 +57,7 @@ public class Server implements Runnable { } } + // Start the server thread public void start() { if(thread == null) { thread = new Thread(this); @@ -62,6 +65,7 @@ public class Server implements Runnable { } } + // Stop the server thread and all other threads public void stop() { if(thread != null) { thread.interrupt(); @@ -77,6 +81,7 @@ public class Server implements Runnable { } } + // This function loops through all the clients and returns the one with the ID entered public int findClient(int id) { for(int i = 0; i < clientCount; i++) { if(clients.get(i).getID() == id) { @@ -87,6 +92,7 @@ public class Server implements Runnable { return -1; } + // Handle any messages the server recieves public synchronized void handle(int id, String username, String input) { if(input.startsWith("/")) { if(input.equals("/quit")) { @@ -135,6 +141,7 @@ public class Server implements Runnable { } } + // Remove a client public synchronized void remove(int id) { int pos = findClient(id); if(pos >= 0) { @@ -156,6 +163,7 @@ public class Server implements Runnable { } } + // Add a new client public void addThread(Socket socket) { clients.add(new ServerThread(this, socket)); try { @@ -167,7 +175,9 @@ public class Server implements Runnable { } } + // Getter methods public String getPasswd() { return passwd; } + // Setter methods public void setPasswd(String npasswd) { this.passwd = npasswd; } } \ No newline at end of file diff --git a/src-server/ServerThread.java b/src-server/ServerThread.java index a503885..5f00ab8 100644 --- a/src-server/ServerThread.java +++ b/src-server/ServerThread.java @@ -20,6 +20,7 @@ public class ServerThread extends Thread { private boolean run = false; private boolean admin = false; + // Constructor method public ServerThread(Server _server, Socket _socket) { super(); this.socket = _socket; @@ -27,6 +28,7 @@ public class ServerThread extends Thread { id = socket.getPort(); } + // Method used to send a message to this client public void send(String msg) { try { streamOut.writeUTF(msg); @@ -38,6 +40,7 @@ public class ServerThread extends Thread { } } + // The run method which will run in a loop public void run() { System.out.println("Server thread " + id + " running."); while(run) { @@ -51,6 +54,7 @@ public class ServerThread extends Thread { } } + // Run a command public void runCommand(String command) { if(command.equals("/help")) { send(" - /admin [passwd] -- Gain admin privileges.\n" + @@ -98,6 +102,7 @@ public class ServerThread extends Thread { } } + // Open the streams public void open() throws IOException { streamIn = new DataInputStream(new BufferedInputStream(socket.getInputStream())); streamOut = new DataOutputStream(new BufferedOutputStream(socket.getOutputStream())); @@ -105,6 +110,7 @@ public class ServerThread extends Thread { run = true; } + // Close the streams public void close() throws IOException { if(socket != null) { socket.close(); } if(streamIn != null) { streamIn.close(); } @@ -112,9 +118,11 @@ public class ServerThread extends Thread { run = false; } + // Getter methods public int getID() { return id; } public String getUsername() { return username; } public boolean isAdmin() { return admin; } + // Setter methods public void setAdmin(boolean a) { this.admin = a; } } \ No newline at end of file