Si!, es exáctamente eso lo que quería hacer, muy claro el código que planteas con muy pocas líneas y parece que me va a aclarar todo el asunto de los hilos x) (sólo lo he mirado por encima todavía pero se ve genial, bueno voy a mirarlo a fondo ahora). Muchas gracias por tus respuestas =D.
Te mandé un privado con mi msn para que me agregases =).
------------------------------------------------EDITO---------------------------------------------------------------------------------
Acabo de leer, compilar, y ejecutar el código. Me da el mismo problema por el que inicié pregunté acerca de los Thread jeje veamos estos son los códigos:
Hilo:
Código:
import java.net.*;
import java.io.*;
public class Hilo implements Runnable {
BufferedReader leerCliente;
BufferedReader leerConsola;
BufferedWriter escribirCliente;
public Hilo(Socket socket) {
try {
leerCliente = new BufferedReader(new InputStreamReader(socket.getInputStream()));
leerConsola = new BufferedReader(new InputStreamReader(System.in));
escribirCliente = new BufferedWriter(new OutputStreamWriter(socket.getOutputStream()));
} catch (IOException ioe) {
}
}
public void run() {
while (true) {
try {
String mensaje = leerConsola.readLine();
escribirCliente.write(mensaje);
mensaje = leerCliente.readLine();
System.out.println(mensaje);
} catch (IOException ioe) {
}
}
}
}
Servidor:
Código:
import java.net.*;
import java.io.*;
public class Servidor {
public Servidor() {
try {
ServerSocket miSocket = new ServerSocket(6789);
while (true) {
Socket cliente = miSocket.accept();
Runnable miCliente = new Hilo(cliente);
Thread hilo = new Thread(miCliente);
hilo.start();
}
} catch (IOException ioe) {
}
}
public static void main(String args[]) {
new Servidor();
}
}
Cliente:
Código:
import java.net.*;
import java.io.*;
public class Cliente implements Runnable {
BufferedReader leerServidor;
BufferedReader leerConsola;
BufferedWriter escribirServidor;
Socket socket;
public Cliente(String ip, int puerto) {
try {
socket = new Socket(ip, puerto);
leerServidor = new BufferedReader(new InputStreamReader(socket.getInputStream()));
leerConsola = new BufferedReader(new InputStreamReader(System.in));
escribirServidor = new BufferedWriter(new OutputStreamWriter(socket.getOutputStream()));
} catch (IOException ioe) {
}
Thread hilo = new Thread(this);
hilo.start();
}
public void run() {
while (true) {
try {
String mensaje = leerConsola.readLine();
escribirServidor.write(mensaje);
mensaje = leerServidor.readLine();
System.out.println(mensaje);
} catch (IOException ioe) {
}
}
}
public static void main(String args[]) {
new Cliente("localhost", 6789);
}
}
Y se bloquea, simplemente no me deja escribir en la consola ni pulsar intro ni nada, es como si los socket no sirviesen de nada y los thread sólo congelasen el programa, no lo consigo hacer bien >_<.
Marcadores