Вы находитесь на странице: 1из 2

Programacin Sockets TCP

Victor Manuel Mancipe Neira


Estudiante Ingeniera de Sistemas UNIMINUTO Bogot, Colombia Cra. 98 # 2 -32 313 458 3544

victormanuel.mancipe@gmail.com ABSTRACT
Sockets programming, intended to simulate the communication between processes, usually for a client and a server. Palabras Clave Socket: Los sockets son un sistema de comunicacin entre procesos de diferentes mquinas de una red, o en la misma. Sockets Stream (sockets TCP): sockets orientados a conexin que proporcionan una comunicacin bidireccional y fiable. 1. InetAddress getLocalAddress(): retorna la mquina local. int getPort(): retorna el puerto destino. int getLocalPort(): retorna el puerto local. InputStream getInputStream(): retorna el flujo de entrada (lectura) del socket. OutputStream getOutputStream(): retorna el flujo de salida (escritura) del socket. void close(): cierra el socket.

2.2. Clase ServerSocket


Implementa un socket del servidor orientado a conexin. Pertenece al package java.net Es necesario importarla si se quiere utilizar. Constructores ServerSocket(int port) ServerSocket(int port, int max) Mtodos ms relevantes Socket accept(): pone el socket servidor a la escucha de peticiones y cuando llega una peticin la acepta, retornando el socket a usar en la comunicacin. InetAddress getInetAddress(): retorna la mquina cliente. int getLocalPort(): retorna el puerto del servidor. void close(): cierra el socket.

INTRODUCCIN

La programacin de sockets es una aproximacin de bajo nivel para la comunicacin entre dos ordenadores que van a intercambiar datos. Por medio clases y mtodos Java, se ilustrar el comportamiento de una comunicacin entre una mquina cliente cliente y otra que acta como servidor. 2.

LA COMUNICACIN

Establecer la comunicacin va ms all de permitir la conexin entre dos o ms mquinas. Se trata de proponer o usar un lenguaje comn o protocolo, para que ambos extremos puedan entenderse. De tal manera que se mencionarn las Clases y mtodos ms comunes, necesarios para realizar este ejercicio. Para establecer una comunicacin en red debemos conocer: Protocolo de comunicacin (TCP o UDP). Direccin del emisor (direccin IP + puerto). Direccin del receptor (direccin IP + puerto). En java, cuando se habla del modelo de sockets de flujo (TCP), contamos con un objeto de tipo Socket en el cliente y en el servidor uno o ms objetos Socket asociados a un ServerSocket. La E/S se realiza a travs de objetos InputStream y OutputStream asociados a los Sockets.

2.1. La Clase Socket


Implementa los sockets de la parte cliente en una comunicacin basada en la conexin. Pertenece al package java.net Es necesario importarla si se quiere utilizar. Constructores Socket(String host, int port) Socket(InetAddress address, int port) Mtodos ms relevantes InetAddress getInetAddress(): retorna la mquina destino.

2.3. Clases InputStream y OutputStream Se usan para la lectura y escritura de bytes. Constructores InputStream int read() int read(byte [] buffer) int read(byte [] buffer, int offset, int len) OutputStream void write(int b) void write(byte [] buffer) void write(byte [] buffer, int offset, int len) 3. EL PROCEDIMIENTO Bsicamente, es suficiente seguir estas indicaciones: El servidor crea un socket servidor que tiene como parmetro el puerto en el que a va estar escuchando las peticiones entrantes:
ServerSocket servicio = new ServerSocket(9999);

El mtodo accept se mantiene a la espera de conexiones entrantes, bloqueando la ejecucin. Cuando se establece una conexin se

devuelve una instancia de Socket con la que llevar a cabo la comunicacin.


Socket socketServicio = servicio.accept();

Por ltimo, una vez terminada la ejecucin, tenemos que cerrar los flujos de datos y el socket (en ese orden):
salida.close(); socketServicio.close(); entrada.close(); cliente.close();

Los clientes crean objetos Socket para comunicarse con el servidor, por ejemplo localhost en el puerto 9999:
Socket cliente = new Socket("localhost", 9999);

La siguiente imagen ilustra perfectamente el proceso llevado a cabo en el cdigo:

Una vez iniciada la conexin, podemos usar getOutputStream y getInputStream para obtener los flujos de salida y entrada de datos de los sockets.
PrintWriter salida = new PrintWriter(socketServicio.getOutputStream(), true); BufferedReader entrada = new BufferedReader(new InputStreamReader(cliente.getInputStream()));

Y utilizar los mtodos de los flujos de datos para enviar o recibir informacin del otro lado de la conexin:
salida.println("Soy el servidor"); System.out.println("Recibido " + entrada.readLine());

4.

REFERENCIAS
[1] Sockets en Java http://mundogeek.net/archivos/2006/03/20/sockets-en-java/ [2] Amaro Caldern Sarah, Valverde Rebaza Jorge C., Sockets y su programacin en Java ,Universidad de Trujillo, Per, 2007

Вам также может понравиться