Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
Programar un
Chat (JAVA)
Mdulo 3 Submodulo 2
INTRODUCCION
CHAT.
tambin conocido como cibercharla, designa una comunicacin escrita
realizada de manera instantnea mediante el uso de un software y a
travs de Internet entre dos, tres o ms personas ya sea de manera
pblica a travs de los llamados chats pblicos (mediante los cuales
cualquier usuario puede tener acceso a la conversacin) o privada, en
los que se comunican dos o ms personas.
JAVA.
Java es una tecnologa que se usa para el desarrollo de aplicaciones que
convierten a la Web en un elemento ms interesante y til. Java no es lo
mismo que javascript, que se trata de una tecnologa sencilla que se usa
para crear pginas web y solamente se ejecuta en el explorador.
1.
package servidor;
2.
3.
import java.awt.BorderLayout;
4.
import java.awt.Color;
5.
import java.awt.event.ActionEvent;
6.
import java.awt.event.ActionListener;
7.
import java.io.IOException;
8.
import java.net.InetAddress;
9.
import java.net.ServerSocket;
10.
import java.net.Socket;
11.
import java.util.concurrent.ExecutorService;
12.
import java.util.concurrent.Executors;
13.
import java.util.logging.Level;
14.
import java.util.logging.Logger;
15.
import javax.swing.*;
16.
17.
18.
19.
20.
* @author Rafa
21.
*/
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
public PrincipalChat(){
32.
33.
34.
35.
36.
37.
38.
39.
areaTexto.setEditable(false);
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
});
61.
62.
63.
64.
65.
66.
67.
68.
areaTexto.append(mensaje + "\n");
69.
70.
71.
72.
campoTexto.setEditable(editable);
}
73.
74.
/**
75.
76.
*/
77.
78.
79.
80.
81.
82.
83.
try {
84.
85.
86.
87.
88.
89.
while (true){
90.
try {
91.
92.
93.
//main.mostrarMensaje("Conexion Establecida");
94.
main.mostrarMensaje("Conectado a :
" + conexion.getInetAddress().getHostName());
95.
96.
97.
98.
99.
100.
101.
102.
Logger.getLogger(PrincipalChat.class.getName()).log(Level.SEVERE, null,
ex);
103.
104.
105.
106.
107.
108.
finally {
109.
110.
executor.shutdown();
111.
112.
}
}
Clase ThreadEnvia:
En esta clase establecemos nuestro canal de salida tipo ObjectOutputStream, el cual nos sirve
para escribir el mensaje, enviarlo y mostrarlo en pantalla mediante el mtodo enviarDatos().
Adems declaramos la variable conexin tipo Socket, la cual se encarga de establecer el flujo de
datos entre cliente y servidor.
1.
package servidor;
2.
3.
import java.io.IOException;
4.
import java.io.ObjectOutputStream;
5.
import java.net.Socket;
6.
import java.awt.event.ActionEvent;
7.
import java.awt.event.ActionListener;
8.
import java.net.SocketException;
9.
10.
11.
12.
13.
14.
15.
16.
17.
this.conexion = conexion;
18.
this.main = main;
19.
20.
21.
main.campoTexto.addActionListener(new ActionListener() {
22.
23.
mensaje = event.getActionCommand();
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
try {
34.
35.
36.
37.
} //Fin try
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
main.areaTexto.append(mensaje);
}
49.
50.
try {
51.
52.
salida.flush();
53.
54.
55.
ioException.printStackTrace();
56.
57.
58.
59.
60.
Clase ThreadRecibe:
En esta clase establecemos nuestro canal de entrada tipo ObjectInputStream, el cual se encarga
de recibir los mensajes enviados por el cliente o servidor.
Aqu se procesa los mensajes recibidos y luego son mostrados en pantalla.
Es importante aclarar que se debe cerrar el canal de entrada de datos y el Socket de conexin una
vez finalizado el flujo de datos.
1.
package servidor;
2.
3.
import java.io.EOFException;
4.
import java.io.IOException;
5.
import java.io.ObjectInputStream;
6.
import java.net.Socket;
7.
import java.net.SocketException;
8.
import java.util.logging.Level;
9.
import java.util.logging.Logger;
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
this.cliente = cliente;
21.
this.main = main;
22.
23.
24.
25.
26.
main.areaTexto.append(mensaje);
}
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
main.mostrarMensaje(mensaje);
38.
} //fin try
39.
40.
41.
42.
main.mostrarMensaje("Fin de la conexion");
43.
break;
44.
} //fin catch
45.
46.
47.
48.
49.
50.
51.
52.
53.
try {
54.
55.
56.
} //Fin try
57.
58.
ioException.printStackTrace();
59.
} //fin catch
60.
61.
main.mostrarMensaje("Fin de la conexion");
62.
System.exit(0);
63.
64.
}
}
1.
package servidor;
2.
3.
import java.awt.BorderLayout;
4.
import java.awt.Color;
5.
import java.awt.event.ActionEvent;
6.
import java.awt.event.ActionListener;
7.
import java.io.IOException;
8.
import java.net.InetAddress;
9.
import java.net.ServerSocket;
10.
import java.net.Socket;
11.
import java.util.concurrent.ExecutorService;
12.
import java.util.concurrent.Executors;
13.
import java.util.logging.Level;
14.
import java.util.logging.Logger;
15.
import javax.swing.*;
16.
17.
18.
19.
20.
* @author Rafa
21.
*/
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
public PrincipalChat(){
32.
33.
34.
35.
36.
37.
38.
39.
areaTexto.setEditable(false);
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
});
61.
62.
63.
64.
65.
66.
67.
68.
areaTexto.append(mensaje + "\n");
69.
70.
71.
campoTexto.setEditable(editable);
72.
73.
74.
/**
75.
76.
*/
77.
78.
79.
80.
81.
82.
83.
try {
84.
85.
86.
87.
88.
89.
while (true){
90.
try {
91.
92.
93.
//main.mostrarMensaje("Conexion Establecida");
94.
main.mostrarMensaje("Conectado a :
" + conexion.getInetAddress().getHostName());
95.
96.
97.
98.
99.
100.
101.
102.
Logger.getLogger(PrincipalChat.class.getName()).log(Level.SEVERE, null,
ex);
103.
104.
105.
106.
107.
}
}
} catch (IOException ex) {
Logger.getLogger(PrincipalChat.class.getName()).log(Level.SEVERE, null, ex);
} //Fin del catch
108.
finally {
109.
110.
executor.shutdown();
111.
112.
}
}
Las clases descritas en el paquete Cliente: ThreadRecibe y ThreadEnvia son exactamente las
mismas que se describieron en el paquete Servidor.
Nuestro proyecto se vera asi:
CONCLUSION:
En esta investigacin aprend a saber que era un chat y con que
podemos programar uno, a conocer que es Java y como lo podemos
utilizar para programar un chat desde cero en la aplicacin Java con
sockets , a conocer las clases que debe contener y a como configurar
servidor entre otros, como se ve el programa una vez programado
hacer una prueba de que realmente funciona el chat
Bibliografas:
http://aflrovvs.blogspot.mx/2012/07/como-hacer-un-chatcon-sockets-en-java.html
https://www.youtube.com/watch?v=zZIeUCBKwjc