61 行
1.5 KiB
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();
|
|
}
|
|
|
|
}
|
|
}
|
|
|
|
|
|
}
|