package rvskeyserver; import java.io.IOException; import java.io.PrintStream; import java.net.*; import java.util.Date; public class KeyServer extends Thread { public static int packetnr; private PacketData packetdata; private boolean finished; private int packetLen; private byte bytes[]; public KeyServer() { System.out.println("Starting instance of KeyServer"); packetnr = 0; finished = false; packetLen = 1024; packetdata = new PacketData(); } public static void main(String[] args) { KeyServer key = new KeyServer(); key.start(); } public void run() { try { while(!finished) { DatagramSocket serverSocket = new DatagramSocket(33000); bytes = new byte[packetLen]; DatagramPacket packet = new DatagramPacket(bytes, bytes.length); serverSocket.receive(packet); packetnr++; System.out.println("Received packet #" + packetnr + ", LEN: " + packet.getLength()); serverSocket.close(); if(PacketData.isCrackable(packet)) { sendResponse(packet); } else { new ForwardClient(packet).start(); } } } catch(SocketException se) { se.printStackTrace(); } catch(IOException ioe) { ioe.printStackTrace(); } System.out.println("KeyServer done"); } public void setFinished(boolean finished) { this.finished = finished; } public void sendResponse(DatagramPacket reqPacket) { try { byte stream[] = packetdata.prepareData(reqPacket); DatagramPacket resPacket = new DatagramPacket(stream, stream.length, reqPacket.getAddress(), reqPacket.getPort()); DatagramSocket clientSocket = new DatagramSocket(33000); clientSocket.send(resPacket); clientSocket.close(); } catch(SocketException se) { se.printStackTrace(); } catch(IOException ioe) { ioe.printStackTrace(); } } }