Server.java_



import java.lang.System;
import java.net.ServerSocket;
import java.net.Socket;
import java.io.*;

public class Server
{
	public static void main(String args[])
	{
		try
		{
			ServerSocket servidor = new ServerSocket(1234);	// Se crea un socket servidor con el puerto especificado
			int localPort = servidor.getLocalPort();		// Regresa el puerto por el cual se estA escuchando
			System.out.println("Servidor escuchando en el puerto "+localPort+".");
			Socket cliente = servidor.accept();		// Escucha por una conexiOn de un cliente y la acepta
			String destName = cliente.getInetAddress().getHostName();	// Nombre del host cliente
			int destPort = cliente.getPort();		// Regresa el puerto remoto con el cual estA conectado
			System.out.println("ConexiOn aceptada de "+destName+" en el puerto "+ destPort+".");
			BufferedReader inStream = new BufferedReader(new InputStreamReader(cliente.getInputStream()));	// Se leE del cliente
			//DataOutputStream outStream = new DataOutputStream(cliente.getOutputStream());	// Se escribe en el cliente
			PrintStream outStream = new PrintStream(cliente.getOutputStream());	// Se escribe en el cliente
			boolean ciclo = false;	// Bandera para el ciclo infinito
			do
			{
				String inLine = inStream.readLine();
				System.out.println("Recibido: "+inLine);
				if(inLine.equalsIgnoreCase("salir")) ciclo=true;
				String outLine=new InvierteCadena(inLine.trim()).getString();
				//for(int i=0;i<outLine.length();++i)
				//	outStream.write((byte)outLine.charAt(i));
					outStream.println(outLine);
				outStream.write(13);
				outStream.write(10);
				outStream.flush();
				System.out.println("EnvIo: "+outLine);
			} while(!ciclo);
			inStream.close();
			outStream.close();
			cliente.close();
			servidor.close();
		} catch (IOException ex) { System.out.println("EscepciOn!!!"); }
	}
}

class InvierteCadena
{
	String s;
	public InvierteCadena(String in)
	{
		int len = in.length();
		char VectorC[] = new char[len];
		for(int i=0;i<len;++i)
			VectorC[len-1-i]=in.charAt(i);
		s = String.valueOf(VectorC);
	}
	public String getString() { return s; }
}