Foros del Web » Programación para mayores de 30 ;) » Java »

Dialogo cliente servidor

Estas en el tema de Dialogo cliente servidor en el foro de Java en Foros del Web. Hola, estoy tratando de hacer una aplicacion cliente servidor. La idea es que cuando el cliente se conecte al servidor, el servidor lo salude. Y ...
  #1 (permalink)  
Antiguo 12/09/2008, 16:15
 
Fecha de Ingreso: marzo-2008
Mensajes: 237
Antigüedad: 16 años, 1 mes
Puntos: 6
Dialogo cliente servidor

Hola, estoy tratando de hacer una aplicacion cliente servidor.
La idea es que cuando el cliente se conecte al servidor, el servidor lo salude.
Y luego, si el cliente le manda datos determinados, en base a esos datos el servidor responde de distinta manera.

Digamos algo asi como el dialogo entre cliente y servidor mediante un protocolo.

Bueno, lo que logre hacer es que el cliente se conecte al servidor y el servidor lo salude, pero no entiendo porque no funciona cuando le mando el mensaje "como estas", el servidor me deberia responder "bien", y sin embargo no recibo respuestas. (la idea es que funcione no solo cuando le mando este mensaje al principio sino en cualquier momento que se lo mande mientras estoy conectado)

Les muestro el codigo:

Servidor
Código:
try {
		    final int port= 43332;
		    
		        ServerSocket servidor = new ServerSocket( port);
		        
		        while( true ) {
		            
		            Socket cliente= servidor.accept();
		            PrintWriter mensaje = new PrintWriter( cliente.getOutputStream() );
		            mensaje.println( "Hola" );
		            
		         	    InputStream entrada = cliente.getInputStream(); //Leo lo que me dijo
		         	    String csays = entrada.toString();
		         	    
		         	    if(csays == "como estas")
		         	    {
		         	    	escritor.println( "Bien" );
		         	    }
		      
		            
		            escritor.close();
		            cliente.close();
		            
		        } 
		}
		
		catch (IOException e) {
		}

Y el del cliente es este:
Código:
try {
			Socket skCliente = new Socket( "127.0.0.1" , 43332 );
			DataOutputStream  salida1 = new DataOutputStream(skCliente.getOutputStream());

			String mensaje= "como estas\n";
			
			salida1.write(mensaje.getBytes());
			
			int leido = 0;
			byte datosBytes[]=new byte[256];
			DataInputStream  entrada = new DataInputStream(skCliente.getInputStream());
		    System.out.println ("_______________________________________________");
	        while ((leido=entrada.read(datosBytes,0,256))!=-1)
	        {
		        if (leido > 0)
	               System.out.println (new String(datosBytes,0,(leido-1)));
	        }
			
		}
		
		catch (IOException e) {
		}
Segun esto, me deberia responder todo junto: Hola y debajo Bien.
OK, Solamente me responde Hola.

Alguien sabe porque?

PD: El entrada.toString() esta completamente mal :P estaba probando como detectar la info que me mando el cliente.... pero asi no es.
La idea es, como dije antes, cada vez que cualquiera se conecte al servidor y mande "como estas", responda "bien"

Última edición por razer; 12/09/2008 a las 19:38
  #2 (permalink)  
Antiguo 12/09/2008, 17:47
 
Fecha de Ingreso: marzo-2008
Mensajes: 237
Antigüedad: 16 años, 1 mes
Puntos: 6
Respuesta: Dialogo cliente servidor

Probe de esta manera

Código:
BufferedReader entrada = new BufferedReader(new InputStreamReader(cliente.getInputStream())); //Leo lo que me dijo
		         	    
		            	String csays = entrada.readLine();
		            	
		         	    if(csays == "como estas")
		         	    {
		         	    	escritor.println( "Bien" );
		         	    }

Puse en el string original (del cliente) "como andas" un \n al final porque readline lee hasta el \n.
Pero cuando lo recibo en este codigo de arriba, no me entra al if para responder Bien, entra al else. Debugeo y los 2 string son iguales
es rarisimo. probe con el \n, sin el \n...... y nada

:S

osea, csays = "como estas" cuando lo debugeo, no hay fin de cadena, ni otro \n ni nada mas.
es rarisimo... alguien sabe?
:S

EDIT: Haciendo la comparacion con equals me funciono :D byte

Última edición por razer; 13/09/2008 a las 15:35
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 16:14.