Sei sulla pagina 1di 3

import java.io.*; import java.net.*; /**Ejemplo que implementa un servidor de eco usando TCP.

*/ public class ServidorTCP { public static void main(String argv[]) throws IOException { int Puerto = 5000; Socket skCliente = null; ServerSocket skServidor = null; BufferedReader entrada; DataOutputStream salida; String llego; if(argv.length != 1) { System.err.println("Formato servidor TCP<Puerto>"); System.exit(-1); } try { // Creamos el socket del servidor. skServidor = new ServerSocket(Puerto); System.out.println("CLIENTE: Conexion establecida con el puerto " + Puerto); // Establece un timeout de 30 segs. skServidor.setSoTimeout(30000); // Esperamos posibles conexiones. skCliente = skServidor.accept(); System.out.println("Ya se conecto al cliente."); // Establecemos el canal de entrada. entrada = new BufferedReader(new InputStreamReader(skCliente.getInputStream())); // Establecemos el canal de salida. salida = new DataOutputStream(skCliente.getOutputStream()); do { // Recibimos el mensaje. llego = entrada.readLine(); System.out.println("Llego: " + llego); // Enviamos el eco al cliente. salida.writeInt(llego.length()); } while(llego.length() != 0); System.out.println("Ya termine de recibir."); // Cerramos los flujos. entrada.close(); } catch(SocketTimeoutException e) { System.err.println("30 segs. sin recibir mensaje"); } catch(Exception e) { System.err.println("Error: " + e.getMessage()); e.printStackTrace(); } finally { // Cerramos el socket. skCliente.close(); skServidor.close(); } } }

Cliente import java.io.*; import java.net.*;

/**Ejemplo que implementa un cliente de eco usando TCP.*/ public class ClienteTCP { public static void main(String argv[]) { String tecleado; if(argv.length != 3) { System.err.println("Formato: ClienteTCP <maquina><puerto><mensaje>"); System.exit(-1); // Nota: Porque se da un -1 como parametro. } Socket socket = null; try { // Obtenemos la direccin IP del servidor. InetAddress dirServidor = InetAddress.getByName(argv[0]); // Obtenemos el puerto del servidor. int puertoServidor = Integer.parseInt(argv[1]); // Obtenemos el mensaje. String mensaje = argv[2]; // Creamos el socket y establecemos la conexin con el servidor. socket = new Socket("localhost", puertoServidor); System.out.println("Ya se conecto al servidor."); // Establecemos un timeout de 30 segs. socket.setSoTimeout(30000); System.out.println("CLIENTE: Conexion establecida con " + dirServidor.toString() + " al puerto " + puertoServidor); // Establecemos el canal de entrada. /*BufferedReader sEntrada = new BufferedReader(new InputStreamReader(socket.getInputStream())); // Establecemos el canal de salida. PrintWriter sSalida = new PrintWriter(socket.getOutputStream(), true); System.out.println("Cliente: Enviando " + mensaje); // Enviamos el mensaje al servidor. sSalida.println(mensaje); // Recibimos la respuesta del servidor. String recibido = sEntrada.readLine(); System.out.println("Cliente: Recibido " + recibido);*/ BufferedReader delTeclado = new BufferedReader(new InputStreamReader(System.in)); PrintWriter alServidor = new PrintWriter(socket.getOutputStream(), true); DataInputStream delServidor = new DataInputStream(socket.getInputStream()); do { System.out.print("Teclea un string: "); tecleado = delTeclado.readLine(); alServidor.println(tecleado); System.out.println("Longitud = " + delServidor.readInt()); } while(tecleado.length() != 0); System.out.println("Ya termine de enviar."); // Cerramos los flujos y el socket para liberar la conexin sSalida.close(); delTeclado.close(); } catch (SocketTimeoutException e) { System.err.println("30 segs sin recibir nada"); } catch (Exception e) { System.err.println("Error: " + e.getMessage()); } finally { try { socket.close();

} catch (IOException e) { e.printStackTrace(); } } } }

Potrebbero piacerti anche