Ver Mensaje Individual
  #1 (permalink)  
Antiguo 22/02/2005, 12:02
Kollaso
 
Fecha de Ingreso: octubre-2004
Mensajes: 10
Antigüedad: 20 años, 2 meses
Puntos: 0
Problemas con chat

Tengo el programa Servidor y el Cliente ambos armados desde cero por mi.
Les comento que cuando se ejecutan, en maquinas aparte los dos ocupan todos los recursos. Les dejo el codigo fuente de el cliente.

Este seria el principal...
Código:
import java.awt.*;

public class Login extends Frame {
    TextField nick,email;
    int donde;
	Choice Selector;
    public Login() {

        donde=1;

        resize(250,130);
        //ComboBox	
		Selector = new Choice();
		Selector.addItem("Sala 1");
		Selector.addItem("Sala 2");
	//______________________________________

        Panel p1=new Panel();
        Panel p11=new Panel();
        p11.setLayout(new GridLayout(3,1));
        Panel p12=new Panel();
        p12.setLayout(new GridLayout(3,1));

        nombre=new TextField(15);
        nick=new TextField(15);
        email=new TextField(15);
        p11.add(new Label("Nick:"));
        p12.add(nick);
        p11.add(new Label("Email:"));
        p12.add(email);
        p11.add(new Label("Elije una sala:"));
        p12.add(Selector);
        p1.add("West",p11);
        p1.add("East",p12);
        add("North",p1);
        
        Panel p2=new Panel();
        Button b=new Button("Conectar");
        p2.add(b);
        add("South",p2);
	  setResizable(false);

    } 

    public boolean handleEvent( Event evt ) 
    {
        if (evt.id==evt.WINDOW_EXPOSE)
        {
     	  	switch(donde)
     		{
  			case 1:nick.requestFocus();break;
			case 2:email.requestFocus();break;

		}
		return true;
        }
	  if (evt.id==evt.KEY_PRESS)
        {
		  if (evt.key==9)
	        {
      	  	switch(donde)
	     		{
  			case 1:nick.requestFocus();donde=2;break;
			case 2:email.requestFocus();donde=3;break;

			}
			return true;
	        }
        }
        if( evt.target instanceof Button )
        {
            String boton = ( (Button)evt.target).getLabel();
            if( boton.equals( "Conectar" ) )
            {
			hide();
                  Chat c=new Chat(nick.getText(),email.getText());
            }           
            return( true );
        }
        return false;
    } 


    public static void main( String args[] ) 
    {
        Login window = new Login();
        window.setTitle("Login a OlimarChat");
        window.show();
    }
}

Código:
//Ventana de el Chat
import java.awt.*;
import java.lang.*;
import java.net.*;
import java.io.*;

public class Chat extends Frame{
	String nick,email, sala;
	Socket sckt;
	static TextArea en_comun;
	static List usrs;
	static String buffer_salida;
	TextField entrada;
	Client c;
	public Chat(String n, String em, String Sal){
		nick = n;
		email= em;
		sala = Sal;
		buffer_salida="";
		
		resize(490,340);
		
		en_comun = new TextArea(80,40);
		en_comun.setEditable(false);
		en_comun.appendText("Mensajes en común"+"/n");
		add("West",en_comun);
		
		usrs = new List(40,false);
		add("East",usrs);
		
		entrada=new TextField(100);
		add("South",entrada);
		
		setResizable(false);
		setTitle("OlimarChat");
		
		show();
		entrada.requestFocus();
		
	}
	public boolean handleEvent(Event evt){
		if(evt.id==evt.WINDOW_EXPOSE){
			entrada.requestFocus();
			return true;
		}
		if(evt.key==10){							//enter
		//Lo mando al buffer de salida
		c.escribir_buffer(entrada.getText());
		entrada.setText("");
		return true;
	}
   return (false);
 }
}
Código:
i
mport java.io.*;
import java.net.*;
import java.awt.*;
import java.lang.*;

public class Client extends Chat{
	Socket socket;
	TextArea en_comun;
	List usrs;
	String nick,email,sala;
	public static String buffer_salida;
	
	public Client(String ni, String em,TextArea ta, String sa, List l){
	
	super(ni,em,sa);
	nick=ni;
	email=em;
	en_comun=ta;
	usrs=l;
	sala=sa;
	buffer_salida="";
}
public synchronized void escribir_buffer(String s){
	buffer_salida=s;
}
public synchronized String leer_buffer(){
	return buffer_salida;
}

public void Client(){
	//nos conectamos..
	
	try{ //por si acaso...jejeje
	socket = new Socket("localhost",25);
	PrintStream sale = new PrintStream(socket.getOutputStream());
DataInputStream entra = new DataInputStream(socket.getInputStream());
	//le digo quien soy
	sale.println(nick);
	sale.println(email);
	boolean conectado= false;
	String mensaje="";
	
	//espero el mesaje de bienvenida..
	mensaje=entra.readLine();
	en_comun.appendText(mensaje+"\n");
	boolean salir = false;
	
	usrs.addItem("a todos");
	usrs.select(0);
	do{
		if(!leer_buffer().equals("")){
			//mando lo que hay pa' madar
			if(leer_buffer().equals("/quit")){
				salir = true;
				sale.println("/quit");
			}
			else{
		sale.println(usrs.getSelectedItem()+":"+leer_buffer());
		escribir_buffer("");
			}
		}
		if(entra.available()!=0){
			mensaje=entra.readLine();
			if(!mensaje.equals("")){
				if(mensaje.lastIndexOf("***entró")!=-1){
				int donde;
		donde=mensaje.lastIndexOf("con el nick");
	usrs.addItem(mensaje.substring(donde+13,mensaje.length()));
			en_comun.appendText(mensaje+"\n");
				}
				else
			if(mensaje.lastIndexOf("***Se fué")!=-1){
						int i, donde;
						String quien;
			quien =mensaje.substring(12);
			i=1;
			while(!usrs.getItem(i).equals(quien)){
					i++;
						}
			usrs.delItem(i);
						en_comun.appendText(mensaje+"\n");
					}
					else{
						en_comun.appendText(mensaje+"\n");
					}
				}
			}
		}
		while(!salir);
		socket.close();
	}
	catch (IOException e){
		System.out.println(e);
	}
}
}
Pfff
Espero no haber abusado de el espacio ....