48 行
1.2 KiB
Java
48 行
1.2 KiB
Java
package liste;
|
|
|
|
import java.io.IOException;
|
|
import java.net.DatagramPacket;
|
|
import java.net.DatagramSocket;
|
|
import java.net.SocketException;
|
|
import java.util.concurrent.Semaphore;
|
|
|
|
|
|
public class UdpBroadcastServer implements Runnable{
|
|
|
|
private final int serverPort;
|
|
|
|
|
|
public UdpBroadcastServer(int serverPort) {
|
|
this.serverPort = serverPort;
|
|
}
|
|
|
|
|
|
public void run() {
|
|
try(DatagramSocket serverSocket = new DatagramSocket(serverPort)){ //fermeture ne cas de coupure abrupte ?? //TODO
|
|
|
|
Semaphore semaphore = new Semaphore(1, true);
|
|
|
|
byte[] buffer = new byte[ConstanteListeUtilisateur.SIZE_ORDRE];
|
|
//serverSocket.setSoTimeout(3000);
|
|
while (true) {
|
|
DatagramPacket datagramPacket = new DatagramPacket(buffer, 0, buffer.length);
|
|
serverSocket.receive(datagramPacket);
|
|
|
|
String receivedMessage = new String(datagramPacket.getData(), 0, datagramPacket.getLength());
|
|
System.out.println(receivedMessage);
|
|
|
|
Thread t = new Thread( new TraitementCmdListe(receivedMessage, semaphore) );
|
|
t.start();
|
|
|
|
|
|
}
|
|
|
|
} catch (SocketException e) {
|
|
e.printStackTrace();
|
|
} catch (IOException e) {
|
|
System.out.println("Timedout. CLient is closing.");
|
|
}
|
|
}
|
|
|
|
|
|
}
|