Introducción a las
Tecnologías Web
Java y Servicios Web I
Master en Ingeniería Matemática
Manuel Montenegro
Dpto. Sistemas Informáticos y Computación
Desp. 467 (Mat)
[email protected]
Contenidos
● Clientes, servidores y puertos.
● Comunicación mediante sockets.
● Tecnologías web
● HTML
● CSS
● Applets
● Servicios web
● SOAP: intercambio de datos
● Web scraping
31 Mayo-1 Junio, 2012
11. Introducción a las tecnologías web
2
Clientes y servidores
● Un servidor es un programa que proporciona
recursos o servicios.
● Un cliente es un programa que realiza
peticiones al servidor sobre estos servicios.
Servidor
Protocolo
Clientes
Protocolo
31 Mayo-1 Junio, 2012
11. Introducción a las tecnologías web
3
Puertos
● Un servidor puede ofrecer distintos tipos de
servicios. Cada uno de ellos se realiza a través
de un puerto en la máquina servidor.
● Cada puerto está identificado con un número
entre 0 y 65535.
Servidor
20
22
25
80
110
● Puertos 1 – 1024
Reservados para el S.O. y para
protocolos conocidos.
● Puertos 1024 – 49151
Pueden ser usados para cualquier
aplicación.
● Puertos 49152 – 65535
Dinámicos/privados.
31 Mayo-1 Junio, 2012
11. Introducción a las tecnologías web
4
Servidor web
Servidor de
correo
Servidor
MySQL
80
110
25
143
3306
Protocolo HTTP
Protocolo POP3
Protocolo SMTP
Protocolo IMAP
SQL
Puertos
Cliente web
Cliente de
correo
Driver JDBC
31 Mayo-1 Junio, 2012
11. Introducción a las tecnologías web
5
Contenidos
● Clientes, servidores y puertos.
● Comunicación mediante sockets.
● Tecnologías web
● HTML
● CSS
● Applets
● Servicios web
● SOAP: intercambio de datos
● Web scraping
31 Mayo-1 Junio, 2012
11. Introducción a las tecnologías web
6
Comunicación mediante sockets
● Los sockets conforman el método más rudimentario
de comunicación sobre los protocolos TCP/IP.
● Para que un cliente pueda conectarse a un servidor,
necesita:
● Dirección IP dónde localizar al servidor.
Cuatro números entre 0 y 255. (Ej: 147.96.80.110)
● Número de puerto, en el programa servidor está a la
espera.
● También sirve un nombre del dominio, en lugar de
una dirección IP: www.ejemplo.com
● Servidor DNS: Asocia cada nombre con su IP.
31 Mayo-1 Junio, 2012
11. Introducción a las tecnologías web
7
Comunicación mediante sockets
● Una vez establecido un socket entre dos
ordenadores, la comunicación se realiza
mediante dos canales de datos, de la misma
manera en la que se accede un archivo en Java.
Servidor
5555
InputStream
OutputStream
OutputStream
InputStream
Cliente
31 Mayo-1 Junio, 2012
11. Introducción a las tecnologías web
8
Creación de sockets en Java
● Caso sencillo:
● El cliente envía un número al servidor.
● El servidor devuelve el número recibido elevado al
cuadrado.
Servidor
Cliente
InputStream
OutputStream
5555
7
49
OutputStream
InputStream
31 Mayo-1 Junio, 2012
11. Introducción a las tecnologías web
9
La clase ServerSocket
● Paquete java.net
● Un objeto ServerSocket espera la conexión de
un cliente a través de la red.
● Constructores:
puerto
● ServerSocket(int puerto)
● ServerSocket(int puerto, int longCola)
● Métodos:
● public Socket accept() throws IOException
31 Mayo-1 Junio, 2012
11. Introducción a las tecnologías web
10
La clase Socket
● Representa una conexión particular entre un
cliente determinado y un servidor.
● Constructor:
● Socket(String host, int puerto)
● Métodos:
● public InetAddress getInetAddress()
● public InputStream getInputStream()
● public OutputStream getOutputStream()
31 Mayo-1 Junio, 2012
11. Introducción a las tecnologías web
11
Ejemplo
public class ServidorCalculo implements Runnable {
public void run() {
ServerSocket server = null;
Socket s = null;
Scanner sc = null;
PrintWriter pw = null;
try {
server = new ServerSocket(5555);
System.out.println("Escuchando en el puerto 5555");
while (true) {
s = server.accept();
System.out.println("Recibida conexión desde " + s.getInetAddress());
sc = new Scanner(s.getInputStream());
int n = sc.nextInt();
System.out.println("He recibido un " + n);
pw = new PrintWriter(s.getOutputStream());
pw.print(n*n);
pw.flush();
pw.close();
sc.close();
}
} catch (IOException e) { e.printStackTrace(); }
finally {
if (s != null) try { s.close(); } catch (IOException e) {}
if (server != null) try {server.close();} catch (IOException e) {}
}
}
31 Mayo-1 Junio, 2012
11. Introducción a las tecnologías web
12
Ejemplo
public class ServidorCalculo implements Runnable {
…
public static void main(String[] args) {
Thread t = new Thread(new ServidorCalculo());
t.setDaemon(true);
t.start();
System.out.println("Pulsa INTRO para terminar.");
Scanner sc = new Scanner(System.in);
sc.nextLine();
}
}
31 Mayo-1 Junio, 2012
11. Introducción a las tecnologías web
13
Ejemplo
public class ClienteCalculo {
public static void main(String[] args) {
Socket s = null;
PrintWriter pw = null;
Scanner sc = null;
try {
s = new Socket("localhost", 5555);
pw = new PrintWriter(s.getOutputStream());
pw.println(7);
pw.flush();
sc = new Scanner(s.getInputStream());
int result = sc.nextInt();
System.out.println("He recibido un " + result);
} catch (UnknownHostException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} finally {
sc.close();
pw.close();
try {s.close();} catch (IOException e) {}
}
}
}
●
31 Mayo-1 Junio, 2012
11. Introducción a las tecnologías web
14
Ejemplo
31 Mayo-1 Junio, 2012
11. Introducción a las tecnologías web
15
Otro ejemplo: servidor
public class UppercaseServer {
public static void main(String[] args) throws Exception {
ServerSocket server = null;
Scanner scIn = null;
PrintWriter pwOut = null;
try {
// Esperar conexión con cliente
server = new ServerSocket(5555);
System.out.println("Esperando conexión");
Socket s = server.accept();
System.out.println("Conexión establecida con " + s.getInetAddress());
// Obtener líneas de texto a partir del cliente,
// hasta recibir una línea en blanco
scIn = new Scanner(s.getInputStream());
String str;
ArrayList<String> lineas = new ArrayList<String>();
do {
str = scIn.nextLine();
System.out.println("Recibido: " + str);
lineas.add(str);
} while (!str.isEmpty());
..
ArrayList para
almacenar las
cadenas recibidas
31 Mayo-1 Junio, 2012
11. Introducción a las tecnologías web
16
Otro ejemplo: servidor
// Recorrer las líneas de texto recibidas, convertirlas a
// mayúsculas, y devolverlas al cliente.
pwOut = new PrintWriter(s.getOutputStream());
for (String linea : lineas) {
System.out.println("Envío: " + linea.toUpperCase());
pwOut.println(linea.toUpperCase());
pwOut.flush();
}
} finally {
if (pwOut != null) pwOut.close();
if (scIn != null) scIn.close();
if (server != null) server.close();
}
}
31 Mayo-1 Junio, 2012
11. Introducción a las tecnologías web
17
Otro ejemplo: cliente
public class SingleClient {
public static void main(String[] args) throws Exception {
Socket s = new Socket("localhost", 5555);
Scanner sc = new Scanner(System.in);
PrintWriter pw = new PrintWriter(s.getOutputStream());
String str = null;
do {
System.out.print("CLIENTE >>> ");
str = sc.nextLine();
pw.println(str);
pw.flush();
} while (!str.isEmpty());
Enviar al servidor
las líneas leídas
de teclado, hasta
encontrar una línea
en blanco
Scanner scOut = new Scanner(s.getInputStream());
while (scOut.hasNextLine()) {
System.out.println(scOut.nextLine());
}
scOut.close();
pw.close();
s.close();
}
}
Imprimir la
respuesta del
servidor
31 Mayo-1 Junio, 2012
11. Introducción a las tecnologías web
18
Ejemplo
31 Mayo-1 Junio, 2012
11. Introducción a las tecnologías web
19
¿Y si...?
public class SingleClient {
public static void main(String[] args) throws Exception {
Socket s = new Socket("www.mat.ucm.es", 80);
...
}
}
Servidor web
Cliente web
80
Protocolo HTTP
31 Mayo-1 Junio, 2012
11. Introducción a las tecnologías web
20
Contenidos
● Clientes, servidores y puertos.
● Comunicación mediante sockets.
● Tecnologías web
● HTML
● CSS
● Applets
● Servicios web
● SOAP: intercambio de datos
● Web scraping
31 Mayo-1 Junio, 2012
11. Introducción a las tecnologías web
21
Lenguaje HTML
● HTML – HyperText Markup Language.
● Lenguaje para definición de la estructura y
contenido de páginas web.
● Es un lenguaje de marcado: texto sin formato
al que se añaden etiquetas (tags) para definir
su estructura.
● Etiquetas de inicio: <etiqueta>
● Etiquetas de cierre: </etiqueta>
31 Mayo-1 Junio, 2012
11. Introducción a las tecnologías web
22
Primer ejemplo en HTML
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>Primer ejemplo en HTML</title>
</head>
<body>
Sencillo, no?
Comentarios de: Introducción a las Tenologías Web - Java y Servicios Web I - Master en Ingeniería Matemática (0)
No hay comentarios