diff --git a/README.md b/README.md index 9944766..1d80756 100644 --- a/README.md +++ b/README.md @@ -1,16 +1,15 @@ -ConsoleChat -=========== +ConsoleChat-Server +================== +This is the _server-side_ to the __ConsoleChat__ project. This code takes care of handling commands and sending the information to all the other clients connected. -This program was made as a personal project to learn Java network programming. The concept of it is rather simple, all it does is send messages to a server which, in turn, sends the message to everyone else (aside from some other commands added). Although the license is MIT, please consider also disclosing the source-code under an open-source license. It helps to give back to the community and help others just like this may have helped you. - -###Compiling +### Compiling To compile the source code, make sure you have JDK and Apache Ant installed. Then run the following command: ```bash $ ant ``` -###Contributing +### Contributing To contribute to the project, simply open a pull request and I'll make sure to get back to you as soon as possible. -###License +### License This program is licensed with an [MIT license](/LICENSE). However, please take into account that you took from the community, and you should make sure to give back. diff --git a/build.xml b/build.xml index 668f014..56edaf5 100644 --- a/build.xml +++ b/build.xml @@ -1,10 +1,9 @@ - + - - + @@ -17,14 +16,9 @@ - + - - - - - - + diff --git a/src/consolechat/client/Client.java b/src/consolechat/client/Client.java deleted file mode 100644 index 54a0d9c..0000000 --- a/src/consolechat/client/Client.java +++ /dev/null @@ -1,116 +0,0 @@ -package consolechat.client; - -import java.net.*; -import java.io.*; -import java.lang.*; - -/** - * @author Nicolás A. Ortega - * @copyright Nicolás A. Ortega - * @license MIT - * @year 2014 - * - */ -public class Client implements Runnable { - private String version = "v1.0.1"; - private Socket socket = null; - private ClientThread cThread = null; - private DataOutputStream streamOut = null; - private BufferedReader console = null; - private Thread thread = null; - - public static void main(String[] args) { - if(args.length != 2) { - System.out.println("Usage: consolechat-client [server] [port]"); - } else { - 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" + - "This is free software, and you are welcome to redistribute it\n" + - "under certain conditions; details in LICENSE file.\n"); - - try { - // Create a new socket connection - System.out.println("Connecting to server..."); - socket = new Socket(server, port); - System.out.println("Connected!"); - start(); - } catch(UnknownHostException uhe) { - System.out.println("Host unknown: " + uhe.getMessage()); - } catch(IOException e) { - System.out.println("Unknown exception: " + e.getMessage()); - } - } - - // The run method containing the main loop - public void run() { - String uinput; - while(thread != null) { - try { - uinput = console.readLine(); - if(uinput.equals("/clientVersion")) { - System.out.println(version); - } else { - streamOut.writeUTF(uinput); - streamOut.flush(); - } - } catch(IOException e) { - System.out.println("Sending error: " + e.getMessage()); - stop(); - } - } - } - - // Handle messages - public void handle(String msg) { - if(msg.equals("/quit")) { - System.out.println("Goodbye bye. Press RETURN to exit..."); - stop(); - } else { - System.out.println(msg); - if(msg.length() > 6 && msg.substring(0, 5).equals("Kick:")) { - stop(); - } - } - } - - // Open and start all necessary threads - private void start() throws IOException { - console = new BufferedReader(new InputStreamReader(System.in)); - streamOut = new DataOutputStream(socket.getOutputStream()); - - if(thread == null) { - cThread = new ClientThread(this, socket); - thread = new Thread(this); - thread.start(); - } - } - - // Stop and close all necessary threads - public void stop() { - if(thread != null) { - thread.interrupt(); - thread = null; - } - - try { - if(console != null) { console.close(); } - if(streamOut != null) { streamOut.close(); } - if(socket != null) { socket.close(); } - } catch(IOException e) { - System.out.println("Error closing..."); - } - - try { - cThread.close(); - } catch(IOException e) { - System.out.println("Error closing the thread: " + e); - } - cThread.interrupt(); - } -} diff --git a/src/consolechat/client/ClientThread.java b/src/consolechat/client/ClientThread.java deleted file mode 100644 index 6604f59..0000000 --- a/src/consolechat/client/ClientThread.java +++ /dev/null @@ -1,58 +0,0 @@ -package consolechat.client; - -import java.io.*; -import java.net.*; - -/** - * @author Nicolás A. Ortega - * @copyright Nicolás A. Ortega - * @license MIT - * @year 2014 - * - * For details on the copyright, look at the COPYRIGHT file that came with - * this program. - * - */ -public class ClientThread extends Thread { - private Socket socket = null; - private Client client = null; - private DataInputStream streamIn = null; - private boolean run = false; - - // Constructor - public ClientThread(Client _client, Socket _socket) { - client = _client; - socket = _socket; - open(); - start(); - } - - // Open all necessary streams/threads - public void open() { - try { - streamIn = new DataInputStream(socket.getInputStream()); - } catch(IOException e) { - System.out.println("Error getting input stream: " + e); - client.stop(); - } - 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 { - client.handle(streamIn.readUTF()); - } catch(IOException e) { - System.out.println("Listening error: " + e.getMessage()); - client.stop(); - } - } - } -}