2.3 Clase DatagramSocket

La clase DatagramSocket proporciona acceso a un socket UDP, lo que permite que los paquetes UDP puedan ser enviados y recibidos. Un DatagramPacket se utiliza para representar un paquete UDP, y debe ser creado antes de recibir los paquetes. El mismo DatagramSocket puede ser usado para recibir los paquetes tanto como para enviarlos.
Sin embargo, las operaciones de lectura son de bloqueo, lo que significa que la aplicacióncontinuara esperando hasta que llega un paquete. Ya que los paquetes UDP no garantizan la entrega, esto puede causar que una aplicación se detenga si el remitente no vuelva a enviar los paquetes. Ya que los paquetes UDP no garantizan la entrega, esto puede originar que una aplicación se detenga si el remitente no vuelva a enviar los paquetes.

2.3.1 Creando un DatagramSocketA DatagramSocket puede ser utilizado para enviar y recibir paquetes. Cada DatagramSocket se une a un puerto en la máquina local, el cual es usado para dirigir a los paquetes. El número de puerto necesita no ser el mismo número de la máquina remota, pero si la aplicación es un servidor UDP, se suelen elegir un número de puerto específico. Si el DatagramSocket está destinado a ser un cliente, yno necesita que se una a un número de puerto específico, un constructor en blanco puede ser especificado.
Constructor
Para crear un DatagramSocket cliente, el siguiente constructor es usado:
DatagramSocket () throws java.net.SocketException.
Para crear un server Datagram Socket, el siguiente constructor es usado: que toma como parámetro el puerto al que el servicio UDP será obligado:
DatagramSocket (int puerto) throws java.net.SocketException


2.3.2 Usando un DatagramSocketDatagramSocket se utiliza para recibir los paquetes UDP entrantes y salientes para enviar paquetes UDP. Proporciona métodos para enviar y recibir paquetes, así también como especificar un valor de tiempo de espera cuando nonblocking I/O está utilizando, para inspeccionar y modificar el máximo tamaño de los paquetes UDP, y cerca del zócalo.

Métodos
  • void close () - cierra un socket, y se desliga del puerto local.
  • void connect (InetAddress remote_addr remote_port int) – restringe el acceso a la dirección especificada a distancia y el puerto. La designación es un término equivocado, ya que UDP en realidad no crear una "conexión" entre una máquina y otra. Sin embargo, si este método se utiliza, hace que las excepciones que se produce si se intenta enviar paquetes a,o leer los paquetes de cualquier otro host y el puerto a los especificados.
  • void disconnect() - desconecta el DatagramSocket.
  • InetAddress getInetAddress () - Devuelve la dirección remota a la que el socket está conectado, o null si no existe ninguna tal conexión.
  • int getPort () - devuelve el puerto remoto al que está conectado el socket, o -1 si no existe dicha conexión.
  • InetAddress getLocalAddress () - devuelve la dirección local a la que el socket esta enlazado.
  • int getLocalPort () - devuelve el puerto local al que está enlazado el conector.
  • int getReceiveBufferSize () throws java.net.SocketException – devuelve el tamaño máximo del búfer utilizado para los paquetes UDP entrantes.
  • int getSendBufferSize () throws java.net.SocketException - devuelve el tamaño máximo de búfer utilizado para paquetes UDP salientes.
  • getSoTimeout int () throws java.net.SocketException - devuelve el valor de la opción de conector de tiempo de espera. Este valor se utiliza para determinar el número de milisegundos que una operación de lectura bloqueara antes de lanzar un java.io.InterruptedIOException. De manera predeterminada, este valor será igual a cero, lo que indica que el bloqueo de E / S se utilizará.
  • void receive (DatagramPacket packet)) throws java.io.IOException- lee un paquete UDP y almacena el contenido en el paquete especificado. La dirección y el puerto.


back_button.gifnext_button.gif