diff --git a/TCP/.gitignore b/TCP/.gitignore new file mode 100644 index 0000000..bda8197 --- /dev/null +++ b/TCP/.gitignore @@ -0,0 +1,4 @@ +/TCPClient/target +/TCPServer/target +*iml +*/.idea \ No newline at end of file diff --git a/TCP/ChatTCPClient$1.class b/TCP/ChatTCPClient$1.class deleted file mode 100755 index 48c3723..0000000 Binary files a/TCP/ChatTCPClient$1.class and /dev/null differ diff --git a/TCP/ChatTCPClient.class b/TCP/ChatTCPClient.class deleted file mode 100755 index 53b9e60..0000000 Binary files a/TCP/ChatTCPClient.class and /dev/null differ diff --git a/TCP/ChatTCPClient.java b/TCP/ChatTCPClient.java deleted file mode 100755 index 0bdb8fc..0000000 --- a/TCP/ChatTCPClient.java +++ /dev/null @@ -1,131 +0,0 @@ -//Verteilte Anwendungen - Uebungsblatt 4 -//Aufgabe 1: TCP IRC-Client -// -import java.net.*; -import java.io.*; - -public class ChatTCPClient -{ - private Socket clientSocket; - private InputStream in; - private OutputStream out; - private BufferedReader stdin; - - public ChatTCPClient( String hostname, int hostport ) - { - try { - clientSocket = new Socket( hostname, hostport ); - in = clientSocket.getInputStream(); - out = clientSocket.getOutputStream(); - stdin = new BufferedReader( new InputStreamReader(System.in) ); - } catch (UnknownHostException e) { - System.out.println("Sock:" + e.getMessage()); - } catch (IOException e) { - System.out.println("IO:" + e.getMessage()); - } - } - - private Socket getSocket() - { - return clientSocket; - } - - private void close(Socket cSocket) - { - try { - cSocket.close(); - } catch (IOException e) { - System.out.println("IO :" + e.getMessage()); - } - } - - private void chat() - { - try { - //int bufSize = 1024; - //BufferedInputStream inBuf = new BufferedInputStream( in, bufSize ); - //BufferedOutputStream outBuf = new BufferedOutputStream( out, bufSize ); - - System.out.print( ">" ); - String message = ""; - boolean on = true; - while( on == true ) - { - message = stdin.readLine() + '\n'; - if( message.equals("quit\n") ) - { - message = "QUIT\n"; - on = false; - } - out.write( message.getBytes() ); - out.flush(); - message = ""; - //inBuf.close(); - //outBuf.close(); - } - System.out.println( "closing the Socket..." ); - clientSocket.close(); - - } catch (UnknownHostException e) { - System.out.println("Sock:" + e.getMessage()); - close(clientSocket); - } catch (EOFException e) { - System.out.println("EOF:" + e.getMessage()); - close(clientSocket); - } catch (IOException e) { - System.out.println("IO:" + e.getMessage()); - close(clientSocket); - } - } - - private Thread createHandler(final Socket aClientSocket) { - Thread handler = new Thread(new Runnable() { - public void run() { - try { - InputStream in = aClientSocket.getInputStream(); - OutputStream out = aClientSocket.getOutputStream(); - int c; - String reply = ""; - boolean on = true; - while( on == true ) - { - while( (c = in.read()) != -1 && ( (char)c != '\n' ) && ( (char)c != '\r' ) ) { - reply += (char)c; - } - if( !reply.equals("") && !reply.equals("\n") ) { - System.out.printf( "\n<%s\n>", reply ); - } - if( reply.indexOf("QUIT") > 5 ) { - on = false; - } - reply = ""; - } - System.out.println("Closing client socket"); - aClientSocket.close(); - - } catch (EOFException e) { - System.out.println("EOF:" + e.getMessage()); - close(aClientSocket); - } catch (IOException e) { - System.out.println("IO:" + e.getMessage()); - close(aClientSocket); - } - } - }); - return handler; - } - - public static void main( String args[] ) - { - if( args.length != 2 ) - { - System.out.println( "Usage: TCPClient hostname port" ); - System.exit(1); - } - - ChatTCPClient myClient = new ChatTCPClient( args[0], Integer.parseInt(args[1]) ); - Thread myHandler = myClient.createHandler( myClient.getSocket() ); - myHandler.start(); - myClient.chat(); - } -} diff --git a/TCP/ChatTCPServer.class b/TCP/ChatTCPServer.class deleted file mode 100755 index 431cf06..0000000 Binary files a/TCP/ChatTCPServer.class and /dev/null differ diff --git a/TCP/ChatTCPServer.java b/TCP/ChatTCPServer.java deleted file mode 100755 index ac56f6a..0000000 --- a/TCP/ChatTCPServer.java +++ /dev/null @@ -1,261 +0,0 @@ -//Verteilte Anwendungen - Uebungsblatt 4 -//Aufgabe 1a: TCP IRC-Client -// -import java.io.*; -import java.net.*; -import java.util.*; - -public class ChatTCPServer -{ - public static void main( String[] args ) throws IOException - { - if( args.length != 1 ) - { - System.out.println( "Usage: ChatTCPServer " ); - System.exit(1); - } - int port = Integer.parseInt(args[0]); - - ServerSocket myServerSocket = new ServerSocket( port ); - System.out.println( "Server startet on " + myServerSocket.getInetAddress() + ":" + myServerSocket.getLocalPort()); - - Distributor myDistributor = new Distributor( ); - myDistributor.start( ); - - while( true ) - { - Socket clientSocket = myServerSocket.accept( ); - Listener myListener = new Listener( clientSocket, myDistributor ); - myDistributor.addClient( clientSocket ); - myListener.start( ); - } - } -} - -class Listener extends Thread -{ - private Socket lSocket; - private Distributor lDistributor; - private BufferedReader lSocketReader; - - public Listener(Socket aSocket, Distributor aDistributor) throws IOException - { - lSocket = aSocket; - lSocketReader = new BufferedReader( new InputStreamReader( lSocket.getInputStream() ) ); - lDistributor = aDistributor; - } - - public void run() - { - try { - while( !isInterrupted() ) - { - String message = lSocketReader.readLine( ); - if( message == null ) - break; - lDistributor.parseMessage( lSocket, message ); - } - } catch(IOException exception) { - System.err.println("IO: " + exception.getMessage()); - lDistributor.delClient( lSocket ); - } catch(ArrayIndexOutOfBoundsException exception) { - System.err.println("IO: " + exception.getMessage()); - lDistributor.delClient( lSocket ); - } - lDistributor.delClient( lSocket ); - } -} - -class Distributor extends Thread -{ - private Vector dClients = new Vector(); - private Vector dUsers = new Vector(); - private Vector dMessages = new Vector(); - private int anzRegistered = 0; - - public synchronized void addClient( Socket aClientSocket ) - { - dClients.add( aClientSocket ); - dUsers.add( "noname" ); - System.out.printf("reg:%2d all:%2d # %s/%d # new Client connected\n", anzRegistered, dUsers.size(), aClientSocket.getInetAddress().getHostAddress(), aClientSocket.getPort()); - } - - public synchronized void delClient( Socket aClientSocket ) - { - int i = dClients.indexOf( aClientSocket ); - if (i != -1) - { - String tmpName = (String)dUsers.get(i); - String message = "SERVER: " + tmpName + " QUIT\n"; - if( !tmpName.equals("noname") ) - anzRegistered--; - dClients.removeElementAt( i ); - dUsers.removeElementAt( i ); - sendInfo( aClientSocket, message ); - try { - aClientSocket.close( ); - } catch(IOException exception) { - System.err.println("IO: " + exception.getMessage()); - close( aClientSocket ); - } - } - } - - private void close(Socket cSocket) - { - try { - cSocket.close(); - } catch (IOException e) { - System.out.println("IO :" + e.getMessage()); - } - } - - public synchronized void sendInfo( Socket aClientSocket, String aMessage) - { - try { - OutputStream out = aClientSocket.getOutputStream( ); - out.write( aMessage.getBytes() ); - out.flush( ); - } catch(IOException exception) { - System.err.println("IO: " + exception.getMessage()); - delClient( aClientSocket ); - } - } - - private synchronized void setUsername( Socket aClientSocket, String aClientName ) - { - String message = ""; - if( aClientName.length() > 1 ) - { - int i = dClients.indexOf( aClientSocket ); - if( i != -1 ) - { - dUsers.set( i, aClientName ); - message = "SERVER: " + aClientName + " USER\n"; - } - anzRegistered++; - } - else - message = "SERVER: USERNAME: '" + aClientName + "' is to short!\n"; - sendInfo( aClientSocket, message ); - } - - private synchronized void showUsers( Socket aClientSocket ) - { - String message = ""; - int i = dClients.indexOf( aClientSocket ); - String tmpName = (String)dUsers.get(i); - if( !tmpName.equals("noname") ) - { - message = "SERVER: " + (String)dUsers.get(i) + " USERS: "; - for( i=0 ; i < dUsers.size() ; i++ ) - { - message += (String)dUsers.get(i); - if( i < (dUsers.size()-1) ) - message += ", "; - } - message += "\n"; - } - else - message = "SERVER: You are not registered" + "\n"; - sendInfo( aClientSocket, message ); - } - - private synchronized void sendMessage( Socket aClientSocket, String aMessage ) - { - String message = ""; - int i = dClients.indexOf( aClientSocket ); - String tmpName = (String)dUsers.get(i); - if( !tmpName.equals("noname") ) - { - message = (String)dUsers.get(i) + ": " + aMessage + "\n\r"; - dMessages.add( message ); - } - else - { - message = "SERVER: You are not registered" + "\n"; - sendInfo( aClientSocket, message ); - } - } - - public synchronized void parseMessage( Socket aClientSocket, String aMessage ) - { - int i = dClients.indexOf( aClientSocket ); - String command = ""; - String option = ""; - StringTokenizer tokenizer = new StringTokenizer( aMessage ); - - if( tokenizer.hasMoreTokens() ) - command = tokenizer.nextToken( ); - - if( tokenizer.hasMoreTokens() ) - option += tokenizer.nextToken( ); - while( tokenizer.hasMoreTokens() ) - option += " " + tokenizer.nextToken( ); - - if( command.equals("USER") ) - { - setUsername( aClientSocket, option ); - System.out.printf("reg:%2d all:%2d # %s/%d # %s: User '%s' added\n", anzRegistered, dUsers.size(), aClientSocket.getInetAddress().getHostAddress(), aClientSocket.getPort(), (String)dUsers.get(i), option); - } - else if( command.equals("USERS") ) - { - showUsers( aClientSocket ); - System.out.printf("reg:%2d all:%2d # %s/%d # %s: Userlist requested\n", anzRegistered, dUsers.size(), aClientSocket.getInetAddress().getHostAddress(), aClientSocket.getPort(), (String)dUsers.get(i)); - } - else if( command.equals("PRIVMSG") ) - { - sendMessage( aClientSocket, option ); - System.out.printf("reg:%2d all:%2d # %s/%d # %s: Message '%s'\n", anzRegistered, dUsers.size(), aClientSocket.getInetAddress().getHostAddress(), aClientSocket.getPort(), (String)dUsers.get(i), option); - } - else if( command.equals("QUIT") ) - { - delClient( aClientSocket ); - System.out.printf("reg:%2d all:%2d # %s/%d # %s: Quit from Chat\n", anzRegistered, dUsers.size(), aClientSocket.getInetAddress().getHostAddress(), aClientSocket.getPort(), (String)dUsers.get(i)); - } - else - { - String message = "SERVER: Unknown Command: " + command + "\n"; - sendInfo( aClientSocket, message ); - System.out.printf("reg:%2d all:%2d # %s/%d # %s: Unknown Command '%s'\n", anzRegistered, dUsers.size(), aClientSocket.getInetAddress().getHostAddress(), aClientSocket.getPort(), (String)dUsers.get(i), command); - } - notify( ); - } - - private synchronized String getNextMessage() throws InterruptedException - { - while( dMessages.size() == 0 ) - wait( ); - String message = (String)dMessages.get( 0 ); - dMessages.removeElementAt( 0 ); - return message; - } - - private synchronized void send2Clients( String aMessage ) - { - for( int i=0 ; i < dClients.size() ; i++ ) - { - Socket socket = (Socket)dClients.get(i); - sendInfo( socket, aMessage ); - } - } - - public void run() - { - try { - while( true ) - { - String message = getNextMessage(); - send2Clients(message); - } - } catch (InterruptedException ie) { - // Thread interrupted. Do nothing - } - } -} - -// private ChatUser[] Users = new ChatUser[20]; -// private int anzUser = 0; -// private int aktUser = 0; -// private boolean used = false; - diff --git a/TCP/ChatUser.java b/TCP/ChatUser.java deleted file mode 100755 index 763eecf..0000000 --- a/TCP/ChatUser.java +++ /dev/null @@ -1,56 +0,0 @@ -//Verteilte Anwendungen - Uebungsblatt 4 -//zu Aufgabe 1a/b: User für TCP IRC Server -// -import java.io.*; -import java.net.*; - -public class ChatUser -{ - private String userName; - private Socket userSocket; - - public ChatUser() - { - userName = "none"; - userSocket = null; - } - - public ChatUser(String cName) - { - userName = cName; - userSocket = null; - } - - public ChatUser(Socket cSocket) - { - userName = "none"; - userSocket = cSocket; - } - - public ChatUser(String cName, Socket cSocket) - { - userName = cName; - userSocket = cSocket; - } - - public void setName(String cName) - { - userName = cName; - } - - public void setSocket(Socket cSocket) - { - userSocket = cSocket; - } - - public Socket getSocket() - { - return userSocket; - } - - public String getName() - { - return userName; - } - -} diff --git a/TCP/Distributor.class b/TCP/Distributor.class deleted file mode 100755 index b4675ac..0000000 Binary files a/TCP/Distributor.class and /dev/null differ diff --git a/TCP/Listener.class b/TCP/Listener.class deleted file mode 100755 index aecbc70..0000000 Binary files a/TCP/Listener.class and /dev/null differ diff --git a/TCP/TCPClient/pom.xml b/TCP/TCPClient/pom.xml new file mode 100644 index 0000000..9843ebe --- /dev/null +++ b/TCP/TCPClient/pom.xml @@ -0,0 +1,12 @@ + + + 4.0.0 + + com.secure.chat + chat-client + 1.0-SNAPSHOT + + + \ No newline at end of file diff --git a/TCP/TCPClient/src/main/java/com/secure/client/Client.java b/TCP/TCPClient/src/main/java/com/secure/client/Client.java new file mode 100644 index 0000000..b061e03 --- /dev/null +++ b/TCP/TCPClient/src/main/java/com/secure/client/Client.java @@ -0,0 +1,133 @@ +package com.secure.client; + +import java.io.*; +import java.net.Socket; +import java.net.UnknownHostException; + +/** + * Created by goodbytes on 9/24/2016. + */ +public class Client { + private Socket clientSocket; + private InputStream in; + private OutputStream out; + private BufferedReader stdin; + + public Client( String hostname, int hostport ) + { + try { + clientSocket = new Socket( hostname, hostport ); + in = clientSocket.getInputStream(); + out = clientSocket.getOutputStream(); + stdin = new BufferedReader( new InputStreamReader(System.in) ); + } catch (UnknownHostException e) { + System.out.println("Sock:" + e.getMessage()); + } catch (IOException e) { + System.out.println("IO:" + e.getMessage()); + } + } + + private Socket getSocket() + { + return clientSocket; + } + + private void close(Socket cSocket) + { + try { + cSocket.close(); + } catch (IOException e) { + System.out.println("IO :" + e.getMessage()); + } + } + + private void chat() + { + try { + //int bufSize = 1024; + //BufferedInputStream inBuf = new BufferedInputStream( in, bufSize ); + //BufferedOutputStream outBuf = new BufferedOutputStream( out, bufSize ); + + System.out.print( ">" ); + String message = ""; + boolean on = true; + while( on == true ) + { + message = stdin.readLine() + '\n'; + if( message.equals("quit\n") ) + { + message = "QUIT\n"; + on = false; + } + out.write( message.getBytes() ); + out.flush(); + message = ""; + //inBuf.close(); + //outBuf.close(); + } + System.out.println( "closing the Socket..." ); + clientSocket.close(); + + } catch (UnknownHostException e) { + System.out.println("Sock:" + e.getMessage()); + close(clientSocket); + } catch (EOFException e) { + System.out.println("EOF:" + e.getMessage()); + close(clientSocket); + } catch (IOException e) { + System.out.println("IO:" + e.getMessage()); + close(clientSocket); + } + } + + private Thread createHandler(final Socket aClientSocket) { + Thread handler = new Thread(new Runnable() { + public void run() { + try { + InputStream in = aClientSocket.getInputStream(); + OutputStream out = aClientSocket.getOutputStream(); + int c; + String reply = ""; + boolean on = true; + while( on == true ) + { + while( (c = in.read()) != -1 && ( (char)c != '\n' ) && ( (char)c != '\r' ) ) { + reply += (char)c; + } + if( !reply.equals("") && !reply.equals("\n") ) { + System.out.printf( "\n<%s\n>", reply ); + } + if( reply.indexOf("QUIT") > 5 ) { + on = false; + } + reply = ""; + } + System.out.println("Closing client socket"); + aClientSocket.close(); + + } catch (EOFException e) { + System.out.println("EOF:" + e.getMessage()); + close(aClientSocket); + } catch (IOException e) { + System.out.println("IO:" + e.getMessage()); + close(aClientSocket); + } + } + }); + return handler; + } + + public static void main( String args[] ) + { + if( args.length != 2 ) + { + System.out.println( "Usage: TCPClient hostname port" ); + System.exit(1); + } + + Client myClient = new Client( args[0], Integer.parseInt(args[1]) ); + Thread myHandler = myClient.createHandler( myClient.getSocket() ); + myHandler.start(); + myClient.chat(); + } +} diff --git a/TCP/TCPServer/pom.xml b/TCP/TCPServer/pom.xml new file mode 100644 index 0000000..6d42a2b --- /dev/null +++ b/TCP/TCPServer/pom.xml @@ -0,0 +1,12 @@ + + + 4.0.0 + + com.secure.chat + chat-server + 1.0-SNAPSHOT + + + \ No newline at end of file diff --git a/TCP/TCPServer/src/main/java/com/secure/server/Distributor.java b/TCP/TCPServer/src/main/java/com/secure/server/Distributor.java new file mode 100644 index 0000000..30dee4d --- /dev/null +++ b/TCP/TCPServer/src/main/java/com/secure/server/Distributor.java @@ -0,0 +1,198 @@ +package com.secure.server; + +import java.io.IOException; +import java.io.OutputStream; +import java.net.Socket; +import java.util.StringTokenizer; +import java.util.Vector; + +/** + * Created by bhegde on 24-09-2016. + */ +public class Distributor extends Thread +{ + private Vector dClients = new Vector(); + private Vector dUsers = new Vector(); + private Vector dMessages = new Vector(); + private int anzRegistered = 0; + + public synchronized void addClient( Socket aClientSocket ) + { + dClients.add( aClientSocket ); + dUsers.add( "noname" ); + System.out.printf("reg:%2d all:%2d # %s/%d # new Client connected\n", anzRegistered, dUsers.size(), aClientSocket.getInetAddress().getHostAddress(), aClientSocket.getPort()); + } + + public synchronized void delClient( Socket aClientSocket ) + { + int i = dClients.indexOf( aClientSocket ); + if (i != -1) + { + String tmpName = (String)dUsers.get(i); + String message = "SERVER: " + tmpName + " QUIT\n"; + if( !tmpName.equals("noname") ) + anzRegistered--; + dClients.removeElementAt( i ); + dUsers.removeElementAt( i ); + sendInfo( aClientSocket, message ); + try { + aClientSocket.close( ); + } catch(IOException exception) { + System.err.println("IO: " + exception.getMessage()); + close( aClientSocket ); + } + } + } + + private void close(Socket cSocket) + { + try { + cSocket.close(); + } catch (IOException e) { + System.out.println("IO :" + e.getMessage()); + } + } + + public synchronized void sendInfo( Socket aClientSocket, String aMessage) + { + try { + OutputStream out = aClientSocket.getOutputStream( ); + out.write( aMessage.getBytes() ); + out.flush( ); + } catch(IOException exception) { + System.err.println("IO: " + exception.getMessage()); + delClient( aClientSocket ); + } + } + + private synchronized void setUsername( Socket aClientSocket, String aClientName ) + { + String message = ""; + if( aClientName.length() > 1 ) + { + int i = dClients.indexOf( aClientSocket ); + if( i != -1 ) + { + dUsers.set( i, aClientName ); + message = "SERVER: " + aClientName + " USER\n"; + } + anzRegistered++; + } + else + message = "SERVER: USERNAME: '" + aClientName + "' is to short!\n"; + sendInfo( aClientSocket, message ); + } + + private synchronized void showUsers( Socket aClientSocket ) + { + String message = ""; + int i = dClients.indexOf( aClientSocket ); + String tmpName = (String)dUsers.get(i); + if( !tmpName.equals("noname") ) + { + message = "SERVER: " + (String)dUsers.get(i) + " USERS: "; + for( i=0 ; i < dUsers.size() ; i++ ) + { + message += (String)dUsers.get(i); + if( i < (dUsers.size()-1) ) + message += ", "; + } + message += "\n"; + } + else + message = "SERVER: You are not registered" + "\n"; + sendInfo( aClientSocket, message ); + } + + private synchronized void sendMessage( Socket aClientSocket, String aMessage ) + { + String message = ""; + int i = dClients.indexOf( aClientSocket ); + String tmpName = (String)dUsers.get(i); + if( !tmpName.equals("noname") ) + { + message = (String)dUsers.get(i) + ": " + aMessage + "\n\r"; + dMessages.add( message ); + } + else + { + message = "SERVER: You are not registered" + "\n"; + sendInfo( aClientSocket, message ); + } + } + + public synchronized void parseMessage( Socket aClientSocket, String aMessage ) + { + int i = dClients.indexOf( aClientSocket ); + String command = ""; + String option = ""; + StringTokenizer tokenizer = new StringTokenizer( aMessage ); + + if( tokenizer.hasMoreTokens() ) + command = tokenizer.nextToken( ); + + if( tokenizer.hasMoreTokens() ) + option += tokenizer.nextToken( ); + while( tokenizer.hasMoreTokens() ) + option += " " + tokenizer.nextToken( ); + + if( command.equals("USER") ) + { + setUsername( aClientSocket, option ); + System.out.printf("reg:%2d all:%2d # %s/%d # %s: User '%s' added\n", anzRegistered, dUsers.size(), aClientSocket.getInetAddress().getHostAddress(), aClientSocket.getPort(), (String)dUsers.get(i), option); + } + else if( command.equals("USERS") ) + { + showUsers( aClientSocket ); + System.out.printf("reg:%2d all:%2d # %s/%d # %s: Userlist requested\n", anzRegistered, dUsers.size(), aClientSocket.getInetAddress().getHostAddress(), aClientSocket.getPort(), (String)dUsers.get(i)); + } + else if( command.equals("PRIVMSG") ) + { + sendMessage( aClientSocket, option ); + System.out.printf("reg:%2d all:%2d # %s/%d # %s: Message '%s'\n", anzRegistered, dUsers.size(), aClientSocket.getInetAddress().getHostAddress(), aClientSocket.getPort(), (String)dUsers.get(i), option); + } + else if( command.equals("QUIT") ) + { + delClient( aClientSocket ); + System.out.printf("reg:%2d all:%2d # %s/%d # %s: Quit from Chat\n", anzRegistered, dUsers.size(), aClientSocket.getInetAddress().getHostAddress(), aClientSocket.getPort(), (String)dUsers.get(i)); + } + else + { + String message = "SERVER: Unknown Command: " + command + "\n"; + sendInfo( aClientSocket, message ); + System.out.printf("reg:%2d all:%2d # %s/%d # %s: Unknown Command '%s'\n", anzRegistered, dUsers.size(), aClientSocket.getInetAddress().getHostAddress(), aClientSocket.getPort(), (String)dUsers.get(i), command); + } + notify( ); + } + + private synchronized String getNextMessage() throws InterruptedException + { + while( dMessages.size() == 0 ) + wait( ); + String message = (String)dMessages.get( 0 ); + dMessages.removeElementAt( 0 ); + return message; + } + + private synchronized void send2Clients( String aMessage ) + { + for( int i=0 ; i < dClients.size() ; i++ ) + { + Socket socket = (Socket)dClients.get(i); + sendInfo( socket, aMessage ); + } + } + + public void run() + { + try { + while( true ) + { + String message = getNextMessage(); + send2Clients(message); + } + } catch (InterruptedException ie) { + // Thread interrupted. Do nothing + } + } +} diff --git a/TCP/TCPServer/src/main/java/com/secure/server/Listener.java b/TCP/TCPServer/src/main/java/com/secure/server/Listener.java new file mode 100644 index 0000000..44eb9fd --- /dev/null +++ b/TCP/TCPServer/src/main/java/com/secure/server/Listener.java @@ -0,0 +1,43 @@ +package com.secure.server; + +import java.io.BufferedReader; +import java.io.IOException; +import java.io.InputStreamReader; +import java.net.Socket; + +/** + * Created by bhegde on 24-09-2016. + */ +public class Listener extends Thread +{ + private Socket lSocket; + private Distributor lDistributor; + private BufferedReader lSocketReader; + + public Listener(Socket aSocket, Distributor aDistributor) throws IOException + { + lSocket = aSocket; + lSocketReader = new BufferedReader( new InputStreamReader( lSocket.getInputStream() ) ); + lDistributor = aDistributor; + } + + public void run() + { + try { + while( !isInterrupted() ) + { + String message = lSocketReader.readLine( ); + if( message == null ) + break; + lDistributor.parseMessage( lSocket, message ); + } + } catch(IOException exception) { + System.err.println("IO: " + exception.getMessage()); + lDistributor.delClient( lSocket ); + } catch(ArrayIndexOutOfBoundsException exception) { + System.err.println("IO: " + exception.getMessage()); + lDistributor.delClient( lSocket ); + } + lDistributor.delClient( lSocket ); + } +} \ No newline at end of file diff --git a/TCP/TCPServer/src/main/java/com/secure/server/Server.java b/TCP/TCPServer/src/main/java/com/secure/server/Server.java new file mode 100644 index 0000000..cb615ca --- /dev/null +++ b/TCP/TCPServer/src/main/java/com/secure/server/Server.java @@ -0,0 +1,42 @@ +package com.secure.server; + +import java.io.*; +import java.net.*; + +/** + * Created by goodbytes on 9/24/2016. + */ +public class Server { + public static void main( String[] args ) throws IOException + { + if( args.length != 1 ) + { + System.out.println( "Usage: ChatTCPServer " ); + System.exit(1); + } + int port = Integer.parseInt(args[0]); + + ServerSocket myServerSocket = new ServerSocket( port ); + System.out.println( "Server startet on " + myServerSocket.getInetAddress() + ":" + myServerSocket.getLocalPort()); + + Distributor myDistributor = new Distributor( ); + myDistributor.start( ); + + while( true ) + { + Socket clientSocket = myServerSocket.accept( ); + Listener myListener = new Listener( clientSocket, myDistributor ); + myDistributor.addClient( clientSocket ); + myListener.start( ); + } + } +} + + + + + +// private ChatUser[] Users = new ChatUser[20]; +// private int anzUser = 0; +// private int aktUser = 0; +// private boolean used = false; diff --git a/TCP/TCPServer/src/main/java/com/secure/server/User.java b/TCP/TCPServer/src/main/java/com/secure/server/User.java new file mode 100644 index 0000000..1d5c2b5 --- /dev/null +++ b/TCP/TCPServer/src/main/java/com/secure/server/User.java @@ -0,0 +1,55 @@ +package com.secure.server; + +import java.net.Socket; + +/** + * Created by goodbytes on 9/24/2016. + */ +public class User { + private String userName; + private Socket userSocket; + + public User() + { + userName = "none"; + userSocket = null; + } + + public User(String cName) + { + userName = cName; + userSocket = null; + } + + public User(Socket cSocket) + { + userName = "none"; + userSocket = cSocket; + } + + public User(String cName, Socket cSocket) + { + userName = cName; + userSocket = cSocket; + } + + public void setName(String cName) + { + userName = cName; + } + + public void setSocket(Socket cSocket) + { + userSocket = cSocket; + } + + public Socket getSocket() + { + return userSocket; + } + + public String getName() + { + return userName; + } +}