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; }
}