7-8 desarrollo de sockets en java

Upload: aiitaqq-ily

Post on 03-Mar-2016

212 views

Category:

Documents


0 download

DESCRIPTION

DESARROLLO DE SOCKETS EN JAVA

TRANSCRIPT

DESARROLLO DE SOCKETS EN JAVALos sockets son basicamente formas en las que podemos interconectar 2 (o mas) programas mediante el uso de la internet. En java se utilizan para poder crear conexiones utilizando basicamente una IP/hostname y un puerto para establecer la conexin. Para aprender podemos utilizarla para conenctar 2 programas por medio de Internet.Como funciona?El modelo mas basico de los sockets consta de 2 simples programas, unservidory uncliente.Basicamente el programa servidor comienza a escuchar en un puerto determinado(nosotros lo especificamos), y posteriormente el programa que la hace de cliente debe conocer la ip o nombre de dominio/hostname del servidor y el puerto que esta escuchando, al saber esto simplemente solicita establecer una conexin con el servidor. Es aqui cuando el servidor acepta esa conexin y se puede decir que estos programas estan conectados, de este modo pueden intercambiar informacin. En el siguiente video muestro un programa servidor con sockets, explico mas o menos el codigo, en que consiste y hago una prueba en el cual la conexin es exitosa.Notas:*Ambos programas (servidor y cliente) no necesitan estar programados en Java, es posible programarlos en lenguajes deprogramacindiferentes, o inclusive programar un servidor en java y utilizar un cliente ya existente que pueda conectarse a un puerto especificado.*El cliente debe de conocer tanto el puerto a utilizar como la IP o dominio del servidor, mientras el servidor solo debe conocer el puerto de conexinA continuacin les dejo estecdigode un servidor muy simple que yo hice en Java, lo que hace es escuchar el puerto 5000, cuando un cliente se conecta esteenvaun mensaje de confirmacin al cliente, luego el cliente al enviar su primer mensaje, el servidorenvaun segundo mensaje y se cierra la conexin. Tambin el de un cliente muy muy simple solo para que se vea la diferencia, de como se pide la conexin al servidor, el clientenicamenteenvaun mensaje de texto pero no recibe informacin.Codigo fuente del servidor01importjava.net.*;

02

03importjava.io.*;

04

05/**

06

07*

08

09* @author Jorge V

10

11*/

12

13publicclassConex {

14

15finalintPUERTO=5000;

16

17ServerSocket sc;

18

19Socket so;

20

21DataOutputStream salida;

22

23String mensajeRecibido;

24

25//SERVIDOR

26

27publicvoidinitServer()

28

29{

30

31BufferedReader entrada;

32

33try

34

35{

36

37sc =newServerSocket(PUERTO );/* crea socket servidor que escuchara en puerto 5000*/

38

39so=newSocket();

40

41System.out.println("Esperando una conexin:");

42

43so = sc.accept();

01//Inicia el socket, ahora esta esperando una conexin por parte del cliente

02

03System.out.println("Un cliente se ha conectado.");

04

05//Canales de entrada y salida de datos

06

07entrada =newBufferedReader(newInputStreamReader(so.getInputStream()));

08

09salida =newDataOutputStream(so.getOutputStream());

10

11System.out.println("Confirmando conexion al cliente....");

12

13salida.writeUTF("Conexin exitosa...n envia un mensaje :D");

14

15//Recepcion de mensaje

16

17mensajeRecibido = entrada.readLine();

18

19System.out.println(mensajeRecibido);

20

21salida.writeUTF("Se recibio tu mensaje.n Terminando conexion...");

22

23salida.writeUTF("Gracias por conectarte, adios!");

24

25System.out.println("Cerrando conexin...");

26

27sc.close();//Aqui se cierra la conexin con el cliente

28

29}catch(Exception e )

30

31{

32

33System.out.println("Error: "+e.getMessage());

34

35}

36

37}

38

39}

Codigo fuente cliente simple01importjava.net.*;

02

03importjava.io.*;

04

05/**

06

07*

08

09* @author Jorge V

10

11*/

12

13publicclassConex {

14

15finalString HOST ="localhost";

16

17finalintPUERTO=5000;

18

19Socket sc;

20

21DataOutputStream mensaje;

22

23DataInputStream entrada;

24

25//Cliente

26

27publicvoidinitClient()/*ejecuta este metodo para correr el cliente */

28

29{

30

31try

32

33{

34

35sc = new Socket( HOST , PUERTO ); /*conectar a un servidor en localhost con puerto 5000*/

36

37//creamos el flujo de datos por el que se enviara un mensaje

38

39mensaje =newDataOutputStream(sc.getOutputStream());

40

41//enviamos el mensaje

42

43mensaje.writeUTF("hola que tal!!");

44

45//cerramos la conexin

46

47sc.close();

48

49}catch(Exception e )

50

51{

52

53System.out.println("Error: "+e.getMessage());

54

55}

56

57}

58

59}