Es mejor que preguntes en un foro que hablen tu idioma, porque casi no se te entiende nada...
Solo una cosa más... no es Java, es javascript. Son totalmente distintos
Solo una cosa más... no es Java, es javascript. Son totalmente distintos
Esta sección te permite ver todos los mensajes escritos por este usuario. Ten en cuenta que sólo puedes ver los mensajes escritos en zonas a las que tienes acceso en este momento.
Mostrar Mensajes MenúCita de: Burnhack en 26 Marzo 2008, 20:04 PMNo es nada facil coger codes ajenos y entenderlos.
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;
private ServerSocket socketServidor;
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
{
socketServidor = new ServerSocket(PUERTO);
System.out.println("El servidor esta en marcha escuchando por el puerto: "+PUERTO);
}
catch (java.net.BindException e1)
{
String mensaje="No se puede arrancar el servido es posible que el puerto "+PUERTO+" este ocupado";
errorFatal(e1, mensaje);
}
catch (java.lang.SecurityException e2)
{
String mensaje="No se puede arrancar el servidor es posible que el puerto "+PUERTO+" Tenga restricciones de seguridad";
errorFatal(e2, mensaje);
}
catch (IOException e3)
{
String mensaje="IMposible arrancar el servidor";
errorFatal(e3, mensaje);
}
}
private void procesarClientes()
{
Socket socketCliente =null;
while (true)
{
try
{
socketCliente = socketServidor.accept();
try
{
new ThreadServidor(socketCliente);
}
catch (IOException e1)
{
if (socketCliente !=null)
{
try
{
socketCliente.close();
}
catch (IOException e2)
{
}
}
}
}
catch (java.lang.SecurityException e3)
{
if (socketServidor !=null)
{
try
{
socketServidor.close();
}
catch (IOException e4)
{
//nothing
}
}
String mensaje="Con su configuracion de seguridad, Los clientes no podran conectarse por el puerto "+PUERTO;
errorFatal(e3, mensaje);
}
catch (IOException e5)
{
//no se hace nada por que no se pudo crear el socket
}
}
}
public static void errorFatal(Exception excepcion, String mensajeError)
{
excepcion.printStackTrace();
JOptionPane.showMessageDialog(null,"Error Fatal."+System.getProperty("line.separator")+mensajeError,"Informacion Para el usuario",JOptionPane.WARNING_MESSAGE);
System.exit(-1);
}
}
class ThreadServidor extends Thread
{
private String nombreCliente;
private static String historial = "C:historial.txt";
private static ArrayList clientesActivos = new ArrayList();
private Socket socket;
private BufferedReader entrada;
private PrintWriter salida;
public ThreadServidor(Socket socket) throws IOException
{
this.socket = socket;
PrintWriter salidaArchivo=null;
salida=new PrintWriter(socket.getOutputStream(),true);
entrada = new BufferedReader (new InputStreamReader(socket.getInputStream()));
escribirHistorial("conexion desde la direccion");
start();
}
public void run()
{
String textoUsuario="";
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);
}
}
}
catch (java.io.InterruptedIOException e1)
{
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:");
}
catch (IOException e2)
{
escribirHistorial("desconexion Involuntaria desde la direccion:");
}
finally
{
eliminarConexion(this);
limpiar();
}
}
private void limpiar ()
{
if (entrada !=null)
{
try
{
entrada.close();
}
catch(IOException e1)
{
}
}
if (salida!=null)
{
salida.close();
salida=null;
}
if (socket !=null)
{
try
{
socket.close();
}
catch (IOException e2)
{
}
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)
{
Iterator it=clientesActivos.iterator();
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);
}
private static synchronized StringBuffer clientesActivos()
{
StringBuffer cadena = new StringBuffer();
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)
{
PrintWriter salidaArchivo=null;
try
{
salidaArchivo = new PrintWriter(new BufferedWriter(new FileWriter(historial,true)));
salidaArchivo.println(mensaje+""+socket.getInetAddress().getHostName()+" Por el puerto "+socket.getPort()+" en la fecha "+new Date());
}
catch(IOException e1)
{
System.out.println("Fallo en el archivo historial.");
}
finally
{
if (salidaArchivo !=null)
{
salidaArchivo.close();
salidaArchivo=null;
}
}
}
}
private static ArrayList clientesActivos = new ArrayList();
CitarAdvertencia - mientras estabas escribiendo, una nueva respuesta fue publicada. Probablemente desees revisar tu mensaje.
Cita de: Ragnarok en 3 Marzo 2008, 21:02 PM
Modera sin miedo.
static void eliminar() throws IOException {
String nombre;
System.out.print("Nombre: ");
nombre = br.readLine();
for (int i = 0; i < registros.length; i++) {
if (!registros[i].getNombre().equals(nombre))
System.out.println("no existe ese registro");
else
registros[i]=null;
System.out.println("El registro ha sido borrado correctamente");
break;
}