Download Sockets en Java - pedro beltran canessa
Document related concepts
no text concepts found
Transcript
Sockets en Java Uso de Sockets Este pequeño manual, le muestra cómo funciona el Socket Server para crear un pequeño servidor web que envía una página HTML a cualquier Navegador Web como Firefox, Internet Explorer, etc. By: John Michel Rivera de León. Lionheart815@hotmail.com “La Creatividad proviene de un conflicto de ideas” By: John Michel Rivera de León Sockets en Java Uso de Sockets Sockets Sockets Los sockets (conectores) permiten la comunicación de Este manual le muestra procesos. La comunicación entre procesos consiste en la cómo crear un pequeño transmisión de un mensaje entre un conector de u proceso servidor web que envía de mensajes, su conector debe estar asociado a un puerto local y a una de las direcciones de internet del computador donde se ejecuta, cada conector puede enviar como recibir. 16 una página HTML a cualquiera que ingresa a su dirección IP por medio de un Navegador Web, sin necesidad de Un computador permite (2 ) puertos posibles, Cada tener que instalar Un conector se asocia con un protocolo concreto que puede servidor web como ser TCP o UDP. Apache. Sockets en Java y un conector de otro proceso. Para los procesos receptores Utilización de TCP. Muchos de los servicios utilizados se ejecutan sobre conexiones TCP, con número de puerto reservado. HTTP FTP SMTP 1 By: John Michel Rivera de León El API Java para los streams TCP. La interfaz Java para los streams TCP está constituida por las clases ServerSocket y Socket. ServerSocket Esta clase esta diseñada para ser utilizada por un servidor para crear un conector en el puerto de servidor que escucha las peticiones de conexión de los clientes. Su método accept toma una petición connect de la cola, si la cola esta vacía, se Sockets en Java bloqueará hasta que llega una petición. EL resultado de ejecutar accept es una instancia de socket, un conector que da acceso es una instancia de socket, un conector que da acceso a streams para comunicarse con el cliente. Socket. Esta clase es utilizada por el par de procesos de una conexión. El cliente utiliza un constructor para crear un conector, especificando el nombre de DNS de host y el puerto de servidor. Este constructor no solo crea el conector asociado con el puerto local, sino que también se conecta con el computador remoto especificado en el puerto indicado. Características de la comunicacion entre procesos. Comunicacion asíncrona y síncrona. 2 La comunicación entre procesos puede ser síncrona o asíncrona entre un emisor y un receptor. A cada destino de mensajes se asocia una cola. Los procesos emisores producen mensajes que serán añadidos a las colas remotas mientras que los procesos receptores eliminarán mensajes de las colas locales. By: John Michel Rivera de León Síncrona. Los procesos receptor y emisor se sincronizan con cada mensaje. En este caso, tanto envía como recibe son operaciones bloqueantes. A cada envía producido, el proceso emisor se bloquea hasta que se produce el correspondiente recibe. Cuando se invoca el recibe, el proceso se bloquea hasta que llega el mensaje. Asíncrona Creando un Servidor Web basico con Sockets Creamos un clase que contendrá un server socket que estará a la escucha de peticiones por el puerto 80. El server socket se queda a la espera hasta que una Sockets en Java La utilización envía es no bloqueante, de modo que el proceso emisor puede continuar tan pronto como el mensaje haya sido copiado en el búfer local, y la transmisión del menaje de lleva a cabo o en paralelo con el proceso emisor. petición llega, entonces lo acepta con la instrucción Socket remote = s.accept(); Una vez que se acepta el cliente, se le envía la información de las cabeceras HTTP, y posteriormente la página HTML. Una vez enviado todo, se libera el socket para aceptar una nueva conexión de algún cliente. package servidorweb; /** * * @author Lionel */ import java.net.*; import java.io.*; public class ServidorWeb { 3 By: John Michel Rivera de León protected void start() { ServerSocket s; System.out.println("Servidor web iniciado en el puerto 80"); System.out.println("presione ctrl-c to exit"); try { // Crea el socket del servidor inicial s = new ServerSocket(80); } catch ( Exception e ) { System.out.println("Error: " + e ); Sockets en Java return; } System.out.println("Esperando Conexiones"); for ( ;; ) { try { // espera por una conexion Socket remote = s.accept(); // se acepta la conexion System.out.println("Conexion, Enviando datos."); BufferedReader in = new BufferedReader( new InputStreamReader(remote.getInputStream()) ); PrintWriter out = new PrintWriter(remote.getOutputStream()); // leer los datos enviados, // para de leer hasta que lee el fin de linea, es decir la linea en blanco // la linea en blaco es la señal de fin de las cabeceras HTTP String str="."; while ( !str.equals("") ) str = in.readLine(); 4 // Manda la respuesta // Manda las cabeceras out.println("HTTP/1.0 200 OK"); out.println("Content-Type: text/html"); By: John Michel Rivera de León out.println("Servidor: Bot"); // esta linea en blanco indica el final de las cabeceras out.println(""); // Mandamos la pagina HTML out.println( "<H1>Bienvenidos al servidor Web</H2>"); out.println( "<p>Esta es una pagina html de prueba xD.</p>"); out.println( "<p><marquee>---Fin de la pagina--- </marquee></p>"); out.flush(); //envia los datos remote.close(); } catch ( Exception e ) { System.out.println("Error: " + e ); } } public static void main(String args[]) { Sockets en Java } ServidorWeb ws = new ServidorWeb(); ws.start(); } } 5 By: John Michel Rivera de León Iniciamos el servidor web desde consola, con java –jar *.jar: Sockets en Java Ingresamos desde un navegador web cualquier, en este caso fire fox: Observamos que nos despliega la página web, y además dentro del servidor se registra la entrada del cliente: Y Listo. Ya creamos un Pequeño servidor web que envía una página HTML a cualquiera que ingrese a nuestra dirección IP, sin necesidad de instalar Apache o algún otro servidor web. Saludos xD. Visita mi perfil y busca todos los manuales disponibles como: JavaFx MPI Java (Computo paralelo con Java) 6 Creacion de Software matemático y graficas 3D Servidores web, DNS, DHCP, Apache tomcat, Mono, PHP, MySQL, etc.