Kouksi44

SecureClientHandler.java

Nov 25th, 2016
58
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 2.93 KB | None | 0 0
  1.  
  2.  
  3. import java.io.BufferedReader;
  4. import java.io.DataOutputStream;
  5. import java.io.DataOutputStream;
  6. import java.io.InputStreamReader;
  7. import java.io.ObjectInputStream;
  8. import java.io.ObjectOutputStream;
  9. import java.io.Serializable;
  10. import java.net.InetAddress;
  11. import java.net.ServerSocket;
  12. import java.net.Socket;
  13. import java.util.ArrayList;
  14. import java.io.IOException;
  15.  
  16. public class SecureClientHandler extends Thread {
  17.  
  18.  private Socket socket;
  19.  private SecureServer owner;
  20.  private ObjectInputStream inputStream;
  21.  private ObjectOutputStream outputStream;
  22.  
  23.  /**
  24.     * A wrapper for every client that connects to the server. Handles messages being sent to other clients and sends server messages back to the client
  25.     * @param   The socket that holds the connection to the client
  26.     * @param   The server that is currently using this SecureClientHandler
  27.     */
  28.  public SecureClientHandler(Socket clientSocket, SecureServer owner) {
  29.      this.socket = socket;
  30.      this.owner = owner;
  31.      try {
  32.          this.inputStream = new ObjectInputStream(socket.getInputStream());
  33.          this.outputStream = new ObjectOutputStream(socket.getOutputStream());
  34.      } catch (IOException e) {
  35.          e.printStackTrace();
  36.      }
  37.      
  38.  }
  39.  
  40.  /**
  41.     * Runs the thread and listens for any messages coming in from the client
  42.     */
  43.  public void run() {
  44.      while(true) {
  45.          SecureMessage fromClient = null;
  46.          
  47.          try {
  48.              fromClient = (SecureMessage) inputStream.readObject();
  49.          } catch(Exception e) {
  50.              System.out.println(e.getStackTrace());
  51.          }
  52.          
  53.          if ( fromClient != null ) {
  54.              if( fromClient.getType().equals("MESSAGE")) {
  55.                  SecureMessage toClient = new SecureMessage(fromClient.getMessage(),MessageType.MESSAGE,fromClient.getReceiver(),fromClient.getSender());
  56.                  SecureClientHandler receiver = null;
  57.                  
  58.                  try {
  59.                      receiver = owner.resolveClientHandler(fromClient.getReceiver());
  60.                  } catch(ClientNotFoundException e) {
  61.                      e.printStackTrace();
  62.                  }
  63.                  
  64.                  if(receiver != null ) {
  65.                      receiver.sendMessage(toClient);
  66.                  }
  67.              } else {
  68.                  
  69.                  try {
  70.                      socket.close(); // Apparently the client disconnected or there was an error on the client side
  71.                  } catch (IOException e) {
  72.                      e.printStackTrace();
  73.                  }
  74.                  
  75.                  owner.disconnect(this,fromClient.getType()); // TODO: Send a server message to all affected clients
  76.              }
  77.          }
  78.      }
  79.  }
  80.  
  81.  /**
  82.     * Queues a message from the server to be sent to the client (e.g. server restarts or client dropped connection)
  83.     * @param message   The message that should be sent to the client
  84.     */
  85.  public void queueMessage(String message) {
  86.      // TODO: Send server message to client;
  87.  }
  88.  
  89.  public void sendMessage(SecureMessage message) {
  90.      try {
  91.          outputStream.writeObject(message);
  92.      } catch (IOException e) {
  93.          e.printStackTrace();
  94.      }
  95.      
  96.  }
  97.  
  98.  /**
  99.     * Returns the socket of the SecureClientHandler
  100.     * @return A socket
  101.     */
  102.  public Socket getSocket() {
  103.      return this.socket;
  104.  }
  105. }
Add Comment
Please, Sign In to add comment