Problema en Java

Delfos
28 de Marzo del 2009
Buenas a todos.

Tengo un problema con un programa de java el cual no soy capaz de visualizar y no logro sacarlo.

El programa lo realizamos entre dos personas en plan cliente/servidor, en un primer caso uno hace de cliente y el otro de servidor, y en el segundo caso al revés.

El cliente introduce un formato html que le envia al servidor el cual lo recoge y arranca una pagina html con el mismo formato en local.

Pues bien, no lo saco, estoy cerrado en banda y no lo visualizo, se que, en caso de ser el servidor, tengo que utilizar el metodo de socket getInetAddress() para conseguir la IP del cliente (llamemosla IPRemoto), pero ni idea.

Os plasmo como tengo realizado el programa haciendo yo de cliente y servidor al mismo tiempo.

CLIENTE:

package clienteservidor;

import java.net.Socket;
import java.io.*;
import java.net.UnknownHostException;

public class TCPCliente {

public static void main(String[] args)
{
OutputStream FlujoDeSalida;
DataOutputStream Flujo;

try
{
Socket SocketCliente = new Socket ("localhost", 8000);

FlujoDeSalida = SocketCliente.getOutputStream();
Flujo = new DataOutputStream(FlujoDeSalida);
Flujo.writeBytes("Hola mundo");

SocketCliente.close();
}catch (UnknownHostException e)
{
System.out.println ("Referencia a host no resuelta");
}catch (IOException e)
{
System.out.println ("Error en las comunicaciones");
}catch (SecurityException e)
{
System.out.println ("Comunicacion no permitida por razones de seguridad");
}

}
}

-------------------------------------------------------------------------------------------------------------------
-------------------------------------------------------------------------------------------------------------------

SERVIDOR:

package clienteservidor;

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

public class TCPServidor {

public static void main(String[] args) {
byte[] Mensaje=new byte[80];
InputStream FlujoDeEntrada;
DataInputStream Flujo;

int BytesLeidos;
try {
ServerSocket SocketServidor = new ServerSocket(8000);
System.out.println("Esperando una solicitud...");
Socket ComunicaConCliente = SocketServidor.accept();

System.out.println("Comunicacion establecida");
FlujoDeEntrada = ComunicaConCliente.getInputStream();
Flujo = new DataInputStream(FlujoDeEntrada);

do
{
BytesLeidos = Flujo.read(Mensaje);
if (BytesLeidos>0)
{
System.out.print(new String(Mensaje).trim());
}
} while(BytesLeidos>0);

ComunicaConCliente.close();
SocketServidor.close();
} catch (IOException e)
{
System.out.println("Error en las comunicaciones");
System.exit(0);
} catch (SecurityException e)
{
System.out.println("Comunicacion no permitida por razones de seguridad");
System.exit(0);
}

}

}

Este codigo lo pongo a modo de ejemplo, en el que se ve que yo hago los dos papeles de servidor y cliente, pero ya os digo que, ni idea de como poder reconocer la ip (IPRemoto) ni de como utilizar getInetAddress() .

Agradecería mucho cualquiera ayuda.

Gracias de antemano.