Package clueless.controller.client

Source Code of clueless.controller.client.CluelessClient

package clueless.controller.client;

import java.io.DataInputStream;
import java.io.DataOutputStream;
import java.io.IOException;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
import java.net.InetAddress;
import java.net.InetSocketAddress;
import java.net.Socket;
import java.net.SocketTimeoutException;
import java.util.UUID;

import clueless.controller.GameController;
import clueless.events.MessageEvent;
import clueless.messaging.Message;
import clueless.model.Player;

/**
* Class for Clueless game clients.
*
* @author T
*/
public class CluelessClient extends Thread {
  private boolean       keepRunning   = true;
  private Socket         clientSocket   = null;
  private ObjectInputStream input    = null;
  private ObjectOutputStream output  = null;
  private final int    TIME_OUT  = 5000//milliseconds
  private GameController  controller;
  private Player player;
 
  public CluelessClient(GameController controller, InetAddress ipAddress, int port) throws IOException{
    this.controller = controller;
 
   
    try {
      clientSocket = new Socket();
      clientSocket.connect(new InetSocketAddress(ipAddress, port), TIME_OUT);
      clientSocket.setReuseAddress(true);
      input = new ObjectInputStream(new DataInputStream(clientSocket.getInputStream()));
      output = new ObjectOutputStream(new DataOutputStream(clientSocket.getOutputStream()));
     
    } catch (SocketTimeoutException e) {
      System.err.println("Connection Timed Out: " +e.getMessage());
      e.printStackTrace();
    } catch (IOException e) {
      System.err.println("IOException creating client: "+e.getMessage());
      e.printStackTrace();
    }
   
    start();  
  }
 
 
  @Override
  public void run(){
   
      /** Keep listening for messages from the server */
         while(keepRunning && clientSocket.isConnected()) {
          
           /** Pass received messages to the controller */
          controller.fireMessageEvent(new MessageEvent(this, receive()));

         }
  }
 
 
  /**
   * Sends a message to server
   * @param message - the message to send
   */
  public void send(Message message){ 
    if(output != null){
      try {
        output.writeObject(message);
      } catch (IOException e) {
        System.err.println("IOException while trying to send message: "+e.getMessage());
        e.printStackTrace();
      }
    }
  }
    
 
  /**
   * Receives a message from server
   * @return message received from server
   */
  public Message receive() {
    Message message = null;
   
    try {
      input.read();
      message = (Message)input.readObject();
    } catch (IOException e) {
      // TODO Auto-generated catch block
      e.printStackTrace();
    } catch (ClassNotFoundException e) {
      // TODO Auto-generated catch block
      e.printStackTrace();
    }
    return message;
  }
   
 
  public void setPlayer(Player player) {
    this.player = player;
  }
 
  public Player getPlayer(){
    return player;
  }
 
  /**
     * Shuts down all sending and receiving and closes the socket.
     */
    public void disconnect(){
      keepRunning = false;
      try {
        output.close();
        input.close();
          clientSocket.close();
      } catch (IOException e) {
      System.err.println("Error closing Clueless client.");
      e.printStackTrace();
    }
    }  
}
TOP

Related Classes of clueless.controller.client.CluelessClient

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.