Cuando una aplicación quiere leer los paquetes UDP, llama al método DatagramSocket.receive, que copia un paquete UDP en el DatagramPacket especifico. El contenido de la DatagramPacket es procesado y el proceso se repite según sea necesario.
El siguiente fragmento de código ilustra este proceso:
| DatagramPacket packet = new DatagramPacket (new byte[256], 256);DatagramSocket socket = new DatagramSocket(2000);boolean finished = false;while (! finished ){socket.receive (packet);// process the packet}socket.close(); |
Cuando se procesa el paquete, la aplicación debe trabajar directamente con un array de bytes. Sin embargo, si la aplicación se adecua más a la lectura de textos, se puede utilizar las clases del paquete de Java I/O para convertir un array de bytes a otro tipo de stream o lector. Al conectar un ByteArrayInputStream con el contenido de un datagrama y luego a otro tipo de InputStream o un InputStreamReader, se puede acceder al contenido de los paquetes UDP con relativa facilidad. Muchos desarrolladores prefieren usar los stream de Java I/O para procesar data, usando un DataInputStream o un BufferedReader para acceder al contenido de las matrices de bytes.
Por ejemplo, para conectar un DataInputStream con el contenido de un DatagramPacket, el siguiente código puede ser usado :
| ByteArrayInputStream bin = new ByteArrayInputStream(packet.getData() );DataInputStream din = new DataInputStream (bin);// Read the contents of the UDP packet....... |
El flujo del programa en el emisor y receptor
Remitente del programaCrear un socket de datagramas y vincularlo o cualquier puerto local.# Colocar la data en una matriz de bytes.
|
Receptor del programa# Crear un socket de datagrama y enlazarlo a un puerto local específico.
|
No hay comentarios:
Publicar un comentario