Projet_POO/Projet_POO/src/liste/UdpUnicastServer.java

48 rindas
1,1 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 UdpUnicastServer implements Runnable{
private final int serverPort;
public UdpUnicastServer(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[65507];
//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.");
}
}
}