Socket, flujo de texto sin interrupciones

Iniciado por Kerber0, 5 Diciembre 2008, 00:32 AM

0 Miembros y 1 Visitante están viendo este tema.

Kerber0

Buenas gente, el socket que hice unicamente tiene que hablar el cliente, luego el servidor, luego el cliente, luego el servidor.. no puedo lograr que cada uno lo haga cuando quieras

Servidor

import java.net.*;
import java.io.*;

public class Servidor
{
InputStreamReader isr;
OutputStreamWriter osw;
String linea;
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
String msg=null;


public Servidor()
{
  try
   {
     System.out.println("Creando servidor puerto 555...");
     ServerSocket servidor = new ServerSocket(555);
     System.out.println("Esperando llamadas...");
     Socket s = servidor.accept();
     System.out.println("Cliente se ha conectado!");

     while(true)
{
isr = new InputStreamReader(s.getInputStream());
osw = new OutputStreamWriter(s.getOutputStream());

char[] mensaje = new char[256];
isr.read(mensaje,0,255);

String msg = new String(mensaje).trim();
System.out.println("Cliente dijo: "+msg);


if (msg.compareTo("end")==0)
  {
   System.out.println("Cliente ha cerrado la conexion, el programa se cerrara");
   isr.close();
       osw.close();
   servidor.close();
   break;
  }


System.out.println("Ingrese texto:");
linea=br.readLine();
osw.write(linea);
osw.flush();
System.out.println("Esperando respuesta del cliente...");

}

  }
catch(IOException ex)
  {
   System.out.println("Error");
  }
}


public static void main(String arg[])
{
new Servidor();
}

}


El codigo del cliente es muy parecido. Existe alguna forma en la que el Servidor y el Cliente puedan interactuar sin necesidad de esperar una respuesta del otro?

Muchas gracias!

juancho77

Una opcion seria usar Threads ejecutandose en paralelo. Uno se mantendria a la espera de datos, y el otro a la espera de instrucciones del programa local (este ultimo es por el que enviarias la informacion).

Kerber0