import java.io.IOException;
import java.net.DatagramPacket;
import java.net.DatagramSocket;
/**
* Listen on a given socket
* @author bencall
*
*/
public class UDPListener extends Thread{
// Constantes
public static final int MAX_PACKET = 2048;
// Variables d'instances
private DatagramSocket socket;
private UDPDelegate delegate;
private boolean stopThread = false;
public UDPListener(DatagramSocket socket, UDPDelegate delegate){
super();
this.socket = socket;
this.delegate = delegate;
this.start();
}
public void run() {
boolean fin = stopThread;
while(!fin){
byte[] buffer = new byte[MAX_PACKET];
DatagramPacket p = new DatagramPacket(buffer, buffer.length);
try {
synchronized(socket){
if(socket != null){
socket.receive(p);
delegate.packetReceived(socket, p);
}
}
} catch (IOException e) {
e.printStackTrace();
}
// Stop
synchronized(this) {
fin = this.stopThread;
}
}
}
public synchronized void stopThread(){
this.stopThread = true;
}
}