rendered paste bodypackage 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();
}
}
}