Documente Academic
Documente Profesional
Documente Cultură
En Java, las herramientas de red fundamentales provienen de clases e interfaces del paquete
java.net, a travs delas cuales se pueden establecer comunicaciones basadas en flujos, que
permiten a las aplicaciones ver las redes como flujos de datos. La tarea se convierte entonces
en la lectura o escritura de un flujo o archivo, pero con el archivo ubicado en una
computadora remota. Tambin es posible establecer comunicaciones basadas en paquetes.
El modelo que se implementa es el que corresponde a una relacin cliente-servidor, donde
el cliente realiza una peticin, que provoca en el servidor una accin para proporcionar una
respuesta. Cliente y servidor son procesos. Para comunicarse deben establecerse flujos de
bits entre ellos. Los orgenes y destinos de esos flujos, son sockets (elementos de conexin).
El socket es una abstraccin implementada mediante el software, que representa los
terminales de una conexin entre dos mquinas.
Cada dispositivo en una red tiene su identificacin nica, su direccin de red IP. La misma se
representa mediante la clase InetAddress, cuyo mtodo esttico getLocalHost() devuelve
un objeto InetAddress para la computadora local, conteniendo su nombre en la red y su
direccin IP (los mtodos no estticos getHostName() y getHostAddress() proporcionan
esos componentes de manera separada, en formato String). Lo mismo genera el mtodo
esttico getByName(String) si se proporciona el nombre de una direccin (por ejemplo, una
direccin www, o el nombre de un dispositivo en la red, o una direccin IP -como String-). El
mtodo no esttico getAddress() de la clase InetAddress devuelve un vector de bytes con
los 4 componentes de la direccin IP (bytes con signo, que deben ser operados con & 255
para representarlos sin signo).
Los
mtodos
boolean
isAnyLocalAddress()
e
isReachable(int),
permiten,
respectivamente, conocer si el objeto InetAddress al que se aplican, representa una
direccin local, y si es posible intercambiar datos con la direccin por l representada (el
parmetro de tipo int especifica un tiempo de timeout o espera).
Por ejemplo, para conocer el nombre y direccin de la PC:
import java.net.*;
public class IP_Host_PC
{
returnipAddress;
}
En Java entonces, las comunicaciones se basan en sockets, que permiten a las aplicaciones
ver las redes como si fueran enlaces de E/S de archivos: un programa puede leer o escribir en
un socket tan simplemente como se lee o escribe en un archivo, siendo un socket una
construccin de software que representa un extremo de una conexin de red.
Se puede emplear un modo stream, con el protocolo TCP (Transmission Control Protocol,
orientado a la conexin, con mayor fiabilidad con acuse de recibo-), a travs de sockets de
flujo que conecten dos procesos, entre los cuales los datos circularn como flujos continuos.
El modo datagrama utiliza el protocolo UDP (User Datagram Protocol, no orientado a la
conexin, con mayor performance menor congestin, mayor velocidad-). Con sockets de
datagramas se transmitirn paquetes de informacin, proporcionando un servicio sin
conexin que no garantiza un orden especfico en la entrega de los paquetes, pero
incrementa el rendimiento.
El socket contiene dispositivo (identificado por nmero de IP), y proceso (nmero de puerto,
que indica una direccin de memoria).
Lista (parcial) de puertos bien conocidos (a los cuales se dirige un cliente para
obtener un servicio)
Puerto Proceso
Puerto Proceso
20
21
ftp (datos)
ftp (control)
Puerto Proceso
23
telnet
25
53
69
80
smtp
dns
tftp
html
110
143
443
465
pop3
IMAP
https
smtp
2049 NFS
3306 MySQL
6881 BitTorrent
19226PandaSecurity
Sockets de flujo
Pasos para establecer un servidor
mediante:
new
DatagramPacket
paquete
=
new
DatagramPacket(datos,
paqueteRecibido.getAddress(), paqueteRecibido.getPort());
socket.send(paquete);
datos.length,
socket.send(paquete); //
http://docs.oracle.com/javase/tutorial/networking/TOC.html
datos.length,
Cuestionario
1. Qu finalidades tienen un objeto ServerSocket, y un objeto Socket?
2. En qu se convierten los intercambios entre computadoras, empleando Sockets?
3. Qu diferencia el intercambio en modo stream y en modo datagrama?
4. Qu modelo implementa la comunicacin a travs de Sockets?
5. Cmo se generan el Socket del lado del servidor, y el correspondiente en el lado del
cliente?
6. Qu representa la direccin IP 127.0.0.1 (o el nombre equivalente localhost), y qu
permite su uso?
7. Qu informacin debe proporcionarse a un objeto ServerSocket?
8. Qu informacin debe proporcionarse a un objeto Socket para comunicarse con el
anterior?
9. Qu mtodos, y de qu objeto, proporcionan los flujos de entrada y salida para
comunicarse con otra direccin IP?
10.Qu papel desempea un objeto DatagramSocket en relacin a un objeto
DatagramPacket?
11.Qu informacin debe proporcionarse a un objeto DatagramPacket, cuando es recibido?
Y cuando es enviado?
12.Qu mtodos, y de qu objeto, permiten enviar y recibir paquetes desde otra direccin de
la red?
Ejercicios
Codificar un servidor y un cliente que, utilizando TCP, permitan entablar una conversacin o
chat, escribiendo en un cuadro de texto el mensaje que se enviar a la otra terminal, y
mostrando en un rea de texto los mensajes enviados y recibidos.
Codificar un servidor y un cliente que, utilizando UDP, permitan entablar una conversacin o
chat, escribiendo en un cuadro de texto el mensaje que se enviar a la otra terminal, y
mostrando en un rea de texto los mensajes enviados y recibidos.
Codificar un servidor y un cliente que, utilizando TCP, permitan realizar la transferencia
(copia) de un archivo, desde un dispositivo en una red, hacia otro.
Disear un diagrama de clases que se corresponda con una implementacin del juego de
tatet donde los jugadores puedan estar en computadoras distantes. Comentar qu
representan las variables de instancia empleadas, y las finalidades de los mtodos a codificar.
Implementar el diseo anterior.