package ch.epfl.lca.sc250;
import java.net.*;
import java.io.*;
import java.nio.*;
import ch.epfl.lca.sc250.gui.finalgui.*;
public class UDPServer extends Thread {
private DatagramSocket sock;
private CnFrameMain gui;
public static void main ( String[] args ) {
UDPServer udpS = new UDPServer(new CnFrameMain("abc"));
udpS.loop();
}
UDPServer ( CnFrameMain gui ) {
this.gui = gui;
try {
sock = new DatagramSocket(13371);
} catch ( SocketException se ) {
System.out.println("Couldn't create socket.");
}
}
public void run ( ) {
this.loop();
}
public void loop ( ) {
int buffsize = 4096;
byte[] buff = new byte[buffsize];
byte[] head = new byte[3];
byte[] nick = new byte[4];
byte[] addr = new byte[4];
byte[] load = new byte[buffsize-11];
DatagramPacket rp;
String data;
while ( true ) {
rp = new DatagramPacket(buff, buff.length);
try {
sock.receive(rp);
} catch ( IOException ioe ) {
System.out.println("IO-Error");
}
System.out.println("Recieve packet...");
ByteBuffer bb = ByteBuffer.wrap(rp.getData());
bb.get(head);
bb.get(nick);
bb.get(addr);
bb.get(load);
//System.out.println(rp.getAddress().toString() + ":" + Integer.toString(rp.getPort()) + " > " + new String(load));
try {
System.out.println(InetAddress.getByAddress(addr).toString() + " > " + new String(load).trim());
gui.appendBroadcastMessage(InetAddress.getByAddress(addr).toString(), InetAddress.getByAddress(nick).toString(), new String(load).trim());
} catch ( UnknownHostException uhe ) {
System.out.println("Errornous packet address");
}
}
}
}