Es un sencillo chat , echo en java al cual podes conectarte mediante la consola de tu sistema operativo.
Para conectarnos usamos el comando telnet: telnet ip puerto
Conectado desde Ubuntu :
Conectado desde Windows:
En windows tendremos que activar previamente el servicio telnet.
Descripcion breve:
El chat consta de 3 clases , cliente,manejador,server . El server espera clientes, cuando un cliente se conecta el server instancia un objeto manejador que sera el encargado de gestionar el cliente y el server nuevamente se pondra a la escucha para aceptar mas clientes.
Clase Server :
import java.io.IOException;
import java.net.ServerSocket;
import java.net.Socket;
public class Server {
private ServerSocket ss = null;
private Socket s = null;
public Server(){
try {
ss = new ServerSocket(2003);
}
catch (IOException e) {
e.printStackTrace();
System.exit(-1);
}
System.out.println("Escuchando en el puerto 2001: " + ss);
}
public void escuchando(){
while(true){
try {
s = ss.accept();
System.out.println("Nueva conexion aceptada: " + s);
new Manejador(s).start();
s = null;
}
catch (IOException e) {
e.printStackTrace();
System.exit(-1);
}
}
}
public static void main(String[] args) {
new Server().escuchando();
}
}
Clase Manejador :
import java.io.IOException;
import java.net.Socket;
import java.util.Vector;
class Manejador extends Thread {
private Socket s;
Cliente c;
private static Vector<Cliente> clientes = new Vector<Cliente>();
public Manejador(Socket s){
this.s = s;
c=new Cliente(s);
c.getSalida().println("___________BIENVENIDO___________ " );
c.getSalida().println(" " ) ;
c.getSalida().println(" " ) ;
c.getSalida().println(" " ) ;
c.getSalida().println(" " ) ;
c.getSalida().println("Ingrese Usuario: " ) ;
try {
c.setUser(c.getEntrada().readLine() ) ;
} catch (IOException e) {
e.printStackTrace() ;
}
clientes.add(c);
}
public void run() {
try {
while (true) {
String str = c.getEntrada().readLine( ) ;
enviar(str);
System.out.println("Recibo: " + str) ;
if (str.equals("adios" ) )
break;
}
c.getSalida().println("Hasta Luego!!!!" ) ;
c.getSalida().close();
c.getEntrada().close();
} catch (IOException e) {
e.printStackTrace();
}
}
public void enviar(String linea) {
String usuario=c.getUser();
for(Cliente c:clientes){
c.getSalida().println(usuario +" dice: "+ linea);
}
}
}
Clase Cliente :
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.io.PrintWriter;
import java.net.Socket;
public class Cliente {
private String user;
private Socket s;
private BufferedReader entrada;
private PrintWriter salida;
public Cliente(Socket s){
this.s=s;
try {
entrada = new BufferedReader(new InputStreamReader(
s.getInputStream()));
salida = new PrintWriter(new BufferedWriter(new OutputStreamWriter(
s.getOutputStream())), true);
} catch (IOException e) {
e.printStackTrace();
}
}
public PrintWriter getSalida(){
return salida;
}
public BufferedReader getEntrada(){
return entrada;
}
public String getUser() {
return user;
}
public void setUser(String user) {
this.user = user;
}
}
Tenes dudas? , entra a http://www.tengocodigos.com.ar .