package com.weem.epicinventor.network; import com.weem.epicinventor.*; import com.weem.epicinventor.network.*; import com.weem.epicinventor.actor.*; import com.weem.epicinventor.actor.monster.*; import com.weem.epicinventor.hud.*; import com.weem.epicinventor.placeable.*; import com.weem.epicinventor.resource.*; import com.weem.epicinventor.utility.*; import com.weem.epicinventor.world.block.*; import java.io.*; import java.net.*; import java.util.*; class ServerReceiveThread extends Thread { private Registry registry; private GameController gameController; private ServerSendThread serverSendThread; protected DatagramSocket socket = null; protected DatagramPacket packet = null; protected volatile InetAddress address; protected volatile int port; public volatile boolean running = true; protected int totalReceived = 0; protected int totalReceivedCount = 0; public ServerReceiveThread(Registry r, GameController gc, DatagramSocket s, int p) { registry = r; gameController = gc; socket = s; port = p; System.out.println("ServerReceiveThread started" + socket.getPort()); serverSendThread = new ServerSendThread(registry, gameController, socket); serverSendThread.start(); } public void run() { receivePacket(); address = packet.getAddress(); port = packet.getPort(); serverSendThread.address = address; serverSendThread.port = port; while (running) { receivePacket(); } System.out.println("ServerReceiveThread stopped: " + port); } public void setRunning(boolean r) { System.out.println("Set Running ServerReceiveThread stopped: " + r + ":" + port); if (r == false && serverSendThread != null) { serverSendThread.setRunning(false); } running = r; } /* * public synchronized void receivePacket() { try { //receive server packet * byte[] buf = new byte[2056]; packet = new DatagramPacket(buf, * buf.length); socket.receive(packet); * * //translate packet String received = new String(packet.getData(), 0, * packet.getLength()); } catch (IOException e) { e.printStackTrace(); * System.out.println("Failed to Receive"); running = false; } catch * (Exception e) { e.printStackTrace(); running = false; } } */ public synchronized void receivePacket() { try { //receive server packet byte[] buf = new byte[4112]; packet = new DatagramPacket(buf, buf.length); socket.receive(packet); int byteCount = packet.getLength(); //totalReceived += byteCount; //totalReceivedCount++; //System.out.println(totalReceivedCount + ": " + totalReceived); ByteArrayInputStream byteStream = new ByteArrayInputStream(buf); ObjectInputStream is = new ObjectInputStream(new BufferedInputStream(byteStream)); Object o = is.readObject(); //System.out.println("Server Receiving Data: " + o); //System.out.println("Server Receive: " + port); if (gameController.multiplayerMode != gameController.multiplayerMode.NONE && registry.getNetworkThread() != null) { if (o.getClass().equals(UDPKeys.class)) { registry.getPlayerManager().processKeysUpdateUDP((UDPKeys) o); } else { System.out.println("Data: " + o); } } else { System.out.println("Port (" + port + "): " + gameController.multiplayerMode + ":" + registry.getNetworkThread()); setRunning(false); } } catch (IOException e) { e.printStackTrace(); System.out.println("Failed to Receive"); //running = false; } catch (Exception e) { e.printStackTrace(); //running = false; } } }