package ar.com.javacuriosities.networking.udp;
import java.net.DatagramPacket;
import java.net.DatagramSocket;
import java.net.InetAddress;
/*
* El protocolo UDP esta soportado por dos clases principales
* DatagramSocket --> La cual esta encargada de enviar y recibir datos
* DatagramPacket --> Contiene la información a enviar junto con los datos del destinarlo, el encabezado posee
* Source Port|Destination Port|Length|UDP Checksum|Data
*
*/
public class Step1ServerSocketUDP {
public static void main(String[] args) throws InterruptedException {
// Definimos un socket
try (DatagramSocket serverSocket = new DatagramSocket(4000, InetAddress.getLocalHost())){
DatagramPacket inputPacket = new DatagramPacket(new byte[100], 100);
// Podemos asignar un timeout para el método receive
// socket.setSoTimeout(1000);
/*
* Aunque el protocolo UDP no es orientado a la conexión podemos usar
* el método connect() para restringir la llegada de paquetes desde una
* IP + Port.
* Si ejecutamos le método connect() varias veces solo queda restringido
* al ultimo asignado
*/
// socket.connect(InetAddress.getLocalHost(), 5000);
while (true) {
serverSocket.receive(inputPacket);
System.out.println("Remote Address:" + inputPacket.getAddress());
System.out.println("Remote Port:" + inputPacket.getPort());
System.out.println(new String(inputPacket.getData()));
}
} catch (Exception e) {
// Log and Handle exception
e.printStackTrace();
}
}
}