Está en la página 1de 4

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, u sually for a client and a server. Palabras Clave Socket: Los sockets son un sist ema 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(): mquina local. int getPort(): retorna el puerto destino. int getLocalPort(): retor na el puerto local. InputStream getInputStream(): retorna el flujo de entrada (l ectura) 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(in t 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 acep ta, retornando el socket a usar en la comunicacin. InetAddress getInetAddress(): retorna la mquina cliente. int getLocalPort(): retorna el puerto del servidor. vo id close(): cierra el socket. INTRODUCCIN La programacin de sockets es una aproximacin de bajo nivel para la comunicacin entr e dos ordenadores que van a intercambiar datos. Por medio clases y mtodos Java, s e 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 pu edan entenderse. De tal manera que se mencionarn las Clases y mtodos ms comunes, ne cesarios para realizar este ejercicio. Para establecer una comunicacin en red deb emos conocer: Protocolo de comunicacin (TCP o UDP). Direccin del emisor (direccin I P + puerto). Direccin del receptor (direccin IP + puerto). En java, cuando se habl a 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 conexi . Pertenece al package java.net Es necesario importarla si se quiere utilizar. C onstructores 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 by tes. 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 Bs icamente, es suficiente seguir estas indicaciones: El servidor crea un socket se rvidor que tiene como parmetro el puerto en el que a va estar escuchando las peti ciones entrantes: ServerSocket servicio = new ServerSocket(9999);

El mtodo accept se mantiene a la espera de conexiones entrantes, bloqueando la ej ecucin. 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 o btener los flujos de salida y entrada de datos de los sockets. PrintWriter salida = new PrintWriter(socketServicio.getOutputStream(), true); Bu fferedReader entrada = new BufferedReader(new InputStreamReader(cliente.getInput Stream())); 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.read Line()); 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 ,U niversidad de Trujillo, Per, 2007

También podría gustarte