Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import java.io.BufferedReader;
- import java.io.DataOutputStream;
- import java.io.DataOutputStream;
- import java.io.InputStreamReader;
- import java.io.ObjectInputStream;
- import java.io.ObjectOutputStream;
- import java.io.Serializable;
- import java.net.InetAddress;
- import java.net.ServerSocket;
- import java.net.Socket;
- import java.util.ArrayList;
- import java.io.IOException;
- public class SecureClientHandler extends Thread {
- private Socket socket;
- private SecureServer owner;
- private ObjectInputStream inputStream;
- private ObjectOutputStream outputStream;
- /**
- * 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
- * @param The socket that holds the connection to the client
- * @param The server that is currently using this SecureClientHandler
- */
- public SecureClientHandler(Socket clientSocket, SecureServer owner) {
- this.socket = socket;
- this.owner = owner;
- try {
- this.inputStream = new ObjectInputStream(socket.getInputStream());
- this.outputStream = new ObjectOutputStream(socket.getOutputStream());
- } catch (IOException e) {
- e.printStackTrace();
- }
- }
- /**
- * Runs the thread and listens for any messages coming in from the client
- */
- public void run() {
- while(true) {
- SecureMessage fromClient = null;
- try {
- fromClient = (SecureMessage) inputStream.readObject();
- } catch(Exception e) {
- System.out.println(e.getStackTrace());
- }
- if ( fromClient != null ) {
- if( fromClient.getType().equals("MESSAGE")) {
- SecureMessage toClient = new SecureMessage(fromClient.getMessage(),MessageType.MESSAGE,fromClient.getReceiver(),fromClient.getSender());
- SecureClientHandler receiver = null;
- try {
- receiver = owner.resolveClientHandler(fromClient.getReceiver());
- } catch(ClientNotFoundException e) {
- e.printStackTrace();
- }
- if(receiver != null ) {
- receiver.sendMessage(toClient);
- }
- } else {
- try {
- socket.close(); // Apparently the client disconnected or there was an error on the client side
- } catch (IOException e) {
- e.printStackTrace();
- }
- owner.disconnect(this,fromClient.getType()); // TODO: Send a server message to all affected clients
- }
- }
- }
- }
- /**
- * Queues a message from the server to be sent to the client (e.g. server restarts or client dropped connection)
- * @param message The message that should be sent to the client
- */
- public void queueMessage(String message) {
- // TODO: Send server message to client;
- }
- public void sendMessage(SecureMessage message) {
- try {
- outputStream.writeObject(message);
- } catch (IOException e) {
- e.printStackTrace();
- }
- }
- /**
- * Returns the socket of the SecureClientHandler
- * @return A socket
- */
- public Socket getSocket() {
- return this.socket;
- }
- }
Add Comment
Please, Sign In to add comment