1.1.1.
La clase URL
Para comenzar
con la programación de sockets, resulta necesario comprender las clases que
ofrece Java. En primer lugar, la clase URL contiene constructores y métodos
para la manipulación de URL (Universal Resource Locator): un objeto o
servicio en Internet.
El protocolo TCP necesita
dos tipos de información: la dirección
IP y el número de puerto. Vamos a ver como podemos recibir entonces la página
Web siguiente:
http://www.yahoo.com
En primer lugar,
Yahoo tiene registrado su nombre, permitiendo que se use yahoo.com como su
dirección IP, o lo que es lo mismo, cuando indicamos yahoo.com es como si hubiésemos
indicado 205.216.146.71, su dirección IP real.
Si queremos
obtener la dirección IP real de la red en que estamos corriendo, podemos
realizar llamadas a los métodos getLocalHost() y getAddress(). Primero,
getLocalHost() nos devuelve un objeto iNetAddress, que si usamos con
getAddress() generará un array con los cuatro bytes de la dirección IP, por
ejemplo:
InetAddress direccion = InetAddress.getLocalHost();
byte direccionIp[] =
direccion.getAddress();
Si la dirección
de la máquina en que estamos corriendo es 150.150.112.145, entonces:
direccionIp[0] = 150 direccionIp[1] =
150 direccionIp[2] = 112 direccionIp[3] = 145
Por otro lado,
podemos especificar las partes que componen una url y así podríamos construir
un objeto de tipo url utilizando los siguientes constructores:
URL
(“http","www.yahoo.com","80","index.html”);
o dejar
que los sistemas
utilicen todos los
valores por defecto
que tienen definidos, como en:
URL
(“http://www.yahoo.com”);
Y en los dos
casos obtendríamos la visualización de la página principal de Yahoo en nuestro
navegador.
1.1.2.
Arquitectura de
comunicaciones
En Java, crear
una conexión socket TCP/IP se realiza directamente con el paquete java.net. A
continuación mostramos un diagrama de lo que ocurre en el lado del cliente y
del servidor: