Después de corregir 12 errores:
import java.io.*;
import java.net.*;
import javax.swing.*;
import java.util.*;
public class ServidorChat
{
private static final int PUERTO=9000;
protected static final int TIEMPO_DESCONEXION_AUTOMATICA=600000;
public static void main
(String []args
) {
new ServidorChat();
}
public ServidorChat()
{
System.
out.
println("Arrancando Servidor por el puerto "+PUERTO
); arrancarServidor();
procesarClientes();
}
private void arrancarServidor()
{
try
{
System.
out.
println("El servidor esta en marcha escuchando por el puerto: "+PUERTO
); }
{
String mensaje
="No se puede arrancar el servido es posible que el puerto "+PUERTO
+" este ocupado"; errorFatal(e1, mensaje);
}
{
String mensaje
="No se puede arrancar el servidor es posible que el puerto "+PUERTO
+" Tenga restricciones de seguridad"; errorFatal(e2, mensaje);
}
{
String mensaje
="IMposible arrancar el servidor"; errorFatal(e3, mensaje);
}
}
private void procesarClientes()
{
while (true)
{
try
{
socketCliente = socketServidor.accept();
try
{
new ThreadServidor(socketCliente);
}
{
if (socketCliente !=null)
{
try
{
socketCliente.close();
}
{
}
}
}
}
{
if (socketServidor !=null)
{
try
{
socketServidor.close();
}
{
//nothing
}
}
String mensaje
="Con su configuracion de seguridad, Los clientes no podran conectarse por el puerto "+PUERTO
; errorFatal(e3, mensaje);
}
{
//no se hace nada por que no se pudo crear el socket
}
}
}
{
excepcion.printStackTrace();
JOptionPane.
showMessageDialog(null,
"Error Fatal."+System.
getProperty("line.separator")+mensajeError,
"Informacion Para el usuario",
JOptionPane.
WARNING_MESSAGE); }
}
class ThreadServidor
extends Thread {
private static String historial
= "C:historial.txt";
{
this.socket = socket;
escribirHistorial("conexion desde la direccion");
start();
}
public void run()
{
try
{
salida.println("> Bienvenido a este chat.");
salida.println(">introduce tu nombre");
nombreCliente = (entrada.readLine()).trim();
if ((nombreCliente.equals(""))||(nombreCliente==null))
{
nombreCliente="invitado";
}
Iterator it
= clientesActivos.
iterator(); while (it.hasNext())
{
if (nombreCliente.equals(((ThreadServidor)it.next()).nombreCliente))
{
nombreCliente = nombreCliente + socket.getPort();
break;
}
}
anyadirConexion(this);
salida.println(">Se le asigno el alias de"+nombreCliente);
socket.setSoTimeout(ServidorChat.TIEMPO_DESCONEXION_AUTOMATICA);
while ((textoUsuario=entrada.readLine())!=null)
{
if (textoUsuario=="DESCONECTAR")
{
salida.println("****************adios************");
break;
}
else if ((textoUsuario.equals("LISTAR")))
{
escribirCliente (this,">"+clientesActivos());
}
else
{
escribirATODOS(nombreCliente+">"+textoUsuario);
}
}
}
{
escribirCliente(this,">"+"Se paso el tiempo:Conexion Cerrada");
escribirCliente(this,">"+"Si desea continuar, abra otra sesion");
escribirHistorial("desconexion Involuntaria por fin de tiempo desde la direccion:");
}
{
escribirHistorial("desconexion Involuntaria desde la direccion:");
}
finally
{
eliminarConexion(this);
limpiar();
}
}
private void limpiar ()
{
if (entrada !=null)
{
try
{
entrada.close();
}
{
}
}
if (salida!=null)
{
salida.close();
salida=null;
}
if (socket !=null)
{
try
{
socket.close();
}
{
}
socket=null;
}
}
private static synchronized void eliminarConexion(ThreadServidor threadServidor)
{
clientesActivos.remove(threadServidor);
}
private static synchronized void anyadirConexion(ThreadServidor threadServidor)
{
clientesActivos.add(threadServidor);
}
private synchronized void escribirATODOS
(String textoUsuario
) {
while (it.hasNext())
{
ThreadServidor tmp=(ThreadServidor) it.next();
if (!(tmp.equals(this)))
escribirCliente(tmp, textoUsuario);
}
}
private synchronized void escribirCliente
(ThreadServidor threadServidor,
String textoUsuario
) {
(threadServidor.salida).println(textoUsuario);
}
{
for (int i=0;i<clientesActivos.size();i++)
{
ThreadServidor tmp = (ThreadServidor) (clientesActivos.get(i));
cadena.append((((ThreadServidor) clientesActivos.get(i)).nombreCliente)).append("||");
}
return cadena;
}
private synchronized void escribirHistorial
(String mensaje
) {
try
{
salidaArchivo.
println(mensaje
+""+socket.
getInetAddress().
getHostName()+" Por el puerto "+socket.
getPort()+" en la fecha "+new Date()); }
{
System.
out.
println("Fallo en el archivo historial."); }
finally
{
if (salidaArchivo !=null)
{
salidaArchivo.close();
salidaArchivo=null;
}
}
}
}
La próxima busca mejor los errores
Un saludo!