Newer
Older
nonet / src / ch / epfl / lca / sc250 / UDPServer.java
@Andreas Jaggi Andreas Jaggi on 18 May 2006 1 KB Finished TP8
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");
			}
		}
	}
}