Sei sulla pagina 1di 8

Socket Package y Socket Datagram

Socket designa un concepto abstracto por el cual dos programas (posiblemente


situados en computadoras distintas) pueden intercambiar cualquier flujo de datos,
generalmente de manera fiable y ordenada.

Un datagrama es un paquete de datos que constituye el mnimo bloque de


informacin en una red de conmutacin por datagramas, la cual es uno de los dos
tipos de protocolo de comunicacin por conmutacin de paquetes usados para
encaminar por rutas diversas dichas unidades de informacin entre nodos de una
red, por lo que se dice que no est orientado a conexin. La otra es orientada a
conexin.

User Datagram Protocol (UDP) es un protocolo del nivel de transporte basado en el


intercambio de datagramas. Pertenece a la capa 4 (Transporte) del modelo OSI.
Permite el envo de datagramas a travs de la red sin que se haya establecido
previamente una conexin. Tampoco tiene confirmacin ni control de flujo, por lo
que los paquetes pueden adelantarse unos a otros; y tampoco se sabe si ha llegado
correctamente, ya que no hay confirmacin de entrega o recepcin.

En Java, el API de sockets datagrama proporciona dos clases:

1. La clase DatagramSocket para los sockets.


2. La clase DatagramPacket para los datagramas intercambiados.

Para mandar un datagrama a otro proceso, un proceso debe crear un objeto que
representa el datagrama en s mismo. Este objeto puede crearse instanciando un
objeto DatagramPacket que englobe una referencia a un vector de octetos que
contenga los datos de la carga, y la direccin de destino. Una vez que se crea el
objeto DatagramPacket y en l se incluyen los datos de la carga y del destino, el
proceso emisor realiza una llamada al mtodo send del objeto DatagramSocket,
especificando una referencia al objeto DatagramPacket como argumento.

En el proceso receptor, tambin se debe instanciar un objeto DatagramSocket y


enlazarlo a un puerto local; el nmero de puerto debe coincidir con el especificado
en el paquete datagrama del emisor. Para recibir los datagramas enviados al socket,
el proceso crea un objeto DatagramPacket que hace referencia a un vector de
octetos y llama a un mtodo receive de su objeto DatagramSocket, especificando
como argumento una referencia al objeto DatagramPacket.
Con los sockets sin conexin, un socket enlazado a un proceso puede utilizarse
para mandar datagramas a diferentes destinos. Mltiples procesos pueden mandar
simultneamente datagramas al mismo socket enlazado a un proceso receptor. Sin
embargo, el orden de llegada de estos mensajes ser impredecible.
DatagramPacket

Los paquetes de datagramas se utilizan para implementar un servicio de entrega de


paquetes sin conexin. Cada mensaje se enruta de una mquina a otra basada
nicamente en la informacin contenida dentro de ese paquete. Mltiples paquetes
enviados de una mquina a otra pueden enrutarse de forma diferente, y pueden
llegar en cualquier orden. La entrega de paquetes no est garantizada.

Constructores principales:

DatagramPacket(byte[] buf, int length) - Construye un DatagramPacket para


recibir paquetes de longitud length.
DatagramPacket(byte[] buf, int length, InetAddress address, int port) -
Construye un paquete de datagramas para enviar paquetes de longitud
length al nmero de puerto especificado en el host especificado.

DatagramSocket

Un socket de datagrama es el punto de envo o recepcin para un servicio de


entrega de paquetes. Cada paquete enviado o recibido en un socket de datagrama
se dirige y enruta individualmente. Mltiples paquetes enviados de una mquina a
otra pueden enrutarse de forma diferente, y pueden llegar en cualquier orden.

Constructores y Mtodos principales:

DatagramSocket() - Construye un socket de datagrama y lo vincula a


cualquier puerto disponible en la mquina host local.
DatagramSocket(int port) - Construye un socket de datagrama y lo vincula
al puerto especificado en la mquina host local.
close() - Cierra este socket de datagrama.
getSoTimeout() - Recupera la configuracin para SO_TIMEOUT.
receive(DatagramPacket p) - Recibe un paquete de datagramas desde este
socket.
send(DatagramPacket p) - Enva un paquete de datagramas desde este
socket.

En las interfaces de programacin de sockets bsicas, ya sean orientadas a


conexin o sin conexin, las operaciones send son no bloqueantes, mientras que
las operaciones receive son Bloqueantes, esto quiere decir, un proceso continuar
con su ejecucin despus de realizar una llamada a send, pero una llamada al
mtodo receive har que se suspenda.

Potrebbero piacerti anche