mi manual sockets

7
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. [email protected] “La Creatividad proviene de un conflicto de ideas”

Upload: mike-damian-lopez

Post on 01-Jan-2016

10 views

Category:

Documents


2 download

TRANSCRIPT

Page 1: Mi Manual Sockets

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. [email protected]

“La Creatividad proviene de

un conflicto de ideas”

Page 2: Mi Manual Sockets

By: John Michel Rivera de León

Sock

ets

en J

ava

1

Sockets Este manual le muestra

cómo crear un pequeño

servidor web que envía

una página HTML a

cualquiera que ingresa

a su dirección IP por

medio de un Navegador

Web, sin necesidad de

tener que instalar Un

servidor web como

Apache.

Sockets en Java Uso de Sockets

Sockets

Los sockets (conectores) permiten la comunicación de

procesos. La comunicación entre procesos consiste en la

transmisión de un mensaje entre un conector de u proceso

y un conector de otro proceso. Para los procesos receptores

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.

Un computador permite (216) puertos posibles, Cada

conector se asocia con un protocolo concreto que puede

ser TCP o UDP.

Utilización de TCP.

Muchos de los servicios utilizados se ejecutan sobre

conexiones TCP, con número de puerto reservado.

HTTP

FTP

SMTP

Page 3: Mi Manual Sockets

By: John Michel Rivera de León

Sock

ets

en J

ava

2

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

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 comunicacio n entre procesos.

Comunicacio n así ncrona y sí ncrona.

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.

Page 4: Mi Manual Sockets

By: John Michel Rivera de León

Sock

ets

en J

ava

3

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 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.

Creando un Servidor Web ba sico 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

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 {

Page 5: Mi Manual Sockets

By: John Michel Rivera de León

Sock

ets

en J

ava

4

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 );

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();

// Manda la respuesta

// Manda las cabeceras

out.println("HTTP/1.0 200 OK");

out.println("Content-Type: text/html");

Page 6: Mi Manual Sockets

By: John Michel Rivera de León

Sock

ets

en J

ava

5

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[])

{

ServidorWeb ws = new ServidorWeb();

ws.start();

}

}

Page 7: Mi Manual Sockets

By: John Michel Rivera de León

Sock

ets

en J

ava

6

Iniciamos el servidor web desde consola, con java –jar *.jar:

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)

Creacion de Software matemático y graficas 3D

Servidores web, DNS, DHCP, Apache tomcat, Mono, PHP, MySQL, etc.