eugeniaperez.es
1.Repaso
Text
eugeniaperez.es
Al ejecutarlo comprobamos cómo el servidor funciona, pero solo es capaz de manejar un cliente en cada momento...
1.Repaso
Text
eugeniaperez.es
Idealmente un servidor debe ser multicliente, es decir, tratar con múltiples clientes simultáneamente. ¿Cómo...?
Servidor multihilo...
Servidor multihilo
Text
eugeniaperez.es
La idea es la misma pero se trata de colocar la parte relativa al cliente (o al manejador del cliente del servidor) en una clase que soporte Threads de Java.
Servidor multihilo
eugeniaperez.es
Servidor multihilo
Text
eugeniaperez.es
Mismo servidor pero en lugar de mostrar los mensajes por pantalla en el cliente, se incluye una aplicación de escritorio.
Servidor multihilo
Text
eugeniaperez.es
De escritorio... Se crean con Swing.
Servidor multihilo
Text
eugeniaperez.es
Manejo de URLs
Text
eugeniaperez.es
Socket client = new Socket(dir_server, PORT);
Para indicar la URL del servidor podríamos utilizar la clase de java.net URL.
Manejo de URLs
Text
eugeniaperez.es
URL absoluta:
try {
URL url = new URL("http://www.google.es");
} catch (MalformedURLException ex) {
Logger.getLogger(URLExample.class.getName()).log(Level.SEVERE, null, ex);
}
En caso de que no sea posible construir la URL, se obtendrá una excepción de tipo MalformedURLException
Manejo de URLs
Text
eugeniaperez.es
o URLs relativas:
<a href="page1.html">Index</a>
<a href="page2.html">About</a>
URL url = new URL("http://www.google.es/");
URL index = new URL(url, "index.html");
Manejo de URLs
Text
eugeniaperez.es
URL admite varios constructores:
URL url2 = new URL("http","google.es","/pages/page1.html");
URL url3 = new URL("http", "google.es", 80, "/pages/page1.html");
URL url4 = new URL("http://google.es:80/pages/page1.html");
Manejo de URLs
Text
eugeniaperez.es
URL con caracteres especiales:
URL url5 = new URL("http://google.es/initial%20pages/hello%20world/");
URI uri = new URI("http","google.es","/initial pages/hello world/");
URL url6 = uri.toURL();
Manejo de URLs
Text
eugeniaperez.es
Gracias al objeto URL podemos obtener información:
URL url = new URL("http://www.google.es:80/wordpress/index.php?city=Pamplona&temperature=20#head");
System.out.println("URL visited: Displaying information:");
System.out.println("----------------------------------------");
System.out.println("protocol = " + url.getProtocol());
System.out.println("authority = " + url.getAuthority());
System.out.println("host = " + url.getHost());
System.out.println("port = " + url.getPort());
System.out.println("path = " + url.getPath());
System.out.println("query = " + url.getQuery());
System.out.println("file name = " + url.getFile());
System.out.println("ref = " + url.getRef());
Manejo de URLs
Text
eugeniaperez.es
1. Creación de Socket:
Socket client = new Socket(url.getHost(), url.getPort());
2. Leyendo el HTML mediante Screenscraping:
public static String getHTMLContent(URL url) throws IOException {
String htmlCode = "";
BufferedReader in = new BufferedReader(
new InputStreamReader(url.openStream()));
String inputLine;
while ((inputLine = in.readLine()) != null) {
htmlCode += inputLine;
}
in.close();
return htmlCode;
}