Paper - Programación Sockets TCP
Paper - Programación Sockets TCP
Paper - Programación Sockets TCP
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.
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.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
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);
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