Projet_POO/Projet_POO/src/main/java/liste/UdpBroadcastServer.java

61 行
1.5 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;
import defaut.Constante;
public class UdpBroadcastServer implements Runnable{
private final int serverPort;
private DatagramSocket serverSocket;
public UdpBroadcastServer(int serverPort) {
this.serverPort = serverPort;
}
public void run() {
try{
serverSocket = new DatagramSocket(serverPort);
Semaphore semaphore = new Semaphore(1, true);
byte[] buffer = new byte[Constante.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("Broadcast from udp server: " + receivedMessage); //debug
Thread t = new Thread( new TraitementCmdListe(receivedMessage, semaphore) );
t.start();
}
} catch (SocketException e) {
System.out.println("Erreur : Socket UDP Server");
e.printStackTrace();
} catch (IOException e) {
System.out.println("Erreur : IO UDP Sever");
e.printStackTrace();
} finally {
try {
serverSocket.close();
} catch (Exception e) {
System.out.println("Erreur : pas de Server Socket à fermer (UDP)");
e.printStackTrace();
}
}
}
}