Advertisement
RafaGallardo

ChatServidor

Jul 30th, 2012
60
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 4.60 KB | None | 0 0
  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. /**Clase que se encarga de correr los threads de enviar y recibir texto
  18. * y de crear la interfaz grafica.
  19. *
  20. * @author Rafa
  21. */
  22. public class PrincipalChat extends JFrame{
  23. public JTextField campoTexto; //Para mostrar mensajes de los usuarios
  24. public JTextArea areaTexto; //Para ingresar mensaje a enviar
  25. private static ServerSocket servidor; //
  26. private static Socket conexion; //Socket para conectarse con el cliente
  27. private static String ip = "127.0.0.1"; //ip a la cual se conecta
  28.  
  29. public static PrincipalChat main;
  30.  
  31. public PrincipalChat(){
  32. super("Servidor"); //Establece titulo al Frame
  33.  
  34. campoTexto = new JTextField(); //crea el campo para texto
  35. campoTexto.setEditable(false); //No permite que sea editable el campo de texto
  36. add(campoTexto, BorderLayout.NORTH); //Coloca el campo de texto en la parte superior
  37.  
  38. areaTexto = new JTextArea(); //Crear displayArea
  39. areaTexto.setEditable(false);
  40. add(new JScrollPane(areaTexto), BorderLayout.CENTER);
  41. areaTexto.setBackground(Color.orange); //Pone de color cyan al areaTexto
  42. areaTexto.setForeground(Color.BLACK); //pinta azul la letra en el areaTexto
  43. campoTexto.setForeground(Color.BLACK); //pinta toja la letra del mensaje a enviar
  44.  
  45.  
  46. //Crea menu Archivo y submenu Salir, ademas agrega el submenu al menu
  47. JMenu menuArchivo = new JMenu("Archivo");
  48. JMenuItem salir = new JMenuItem("Salir");
  49. menuArchivo.add(salir); //Agrega el submenu Salir al menu menuArchivo
  50.  
  51. JMenuBar barra = new JMenuBar(); //Crea la barra de menus
  52. setJMenuBar(barra); //Agrega barra de menus a la aplicacion
  53. barra.add(menuArchivo); //agrega menuArchivo a la barra de menus
  54.  
  55. //Accion que se realiza cuando se presiona el submenu Salir
  56. salir.addActionListener(new ActionListener() { //clase interna anonima
  57. public void actionPerformed(ActionEvent e) {
  58. System.exit(0); //Sale de la aplicacion
  59. }
  60. });
  61.  
  62. setSize(300, 320); //Establecer tamano a ventana
  63. setVisible(true); //Pone visible la ventana
  64. }
  65.  
  66. //Para mostrar texto en displayArea
  67. public void mostrarMensaje(String mensaje) {
  68. areaTexto.append(mensaje + "\n");
  69. }
  70. public void habilitarTexto(boolean editable) {
  71. campoTexto.setEditable(editable);
  72. }
  73.  
  74.  
  75. /**
  76. * @param args the command line arguments
  77. */
  78. public static void main(String[] args) {
  79. PrincipalChat main = new PrincipalChat(); //Instanciacion de la clase Principalchat
  80. main.setLocationRelativeTo(null); //Centrar el JFrame
  81. main.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); //habilita cerrar la ventana
  82. ExecutorService executor = Executors.newCachedThreadPool(); //Para correr los threads
  83.  
  84. try {
  85. //main.mostrarMensaje("No se encuentra Servidor");
  86. servidor = new ServerSocket(11111, 100);
  87. main.mostrarMensaje("Esperando Cliente ...");
  88.  
  89. //Bucle infinito para esperar conexiones de los clientes
  90. while (true){
  91. try {
  92. conexion = servidor.accept(); //Permite al servidor aceptar conexiones
  93.  
  94. //main.mostrarMensaje("Conexion Establecida");
  95. main.mostrarMensaje("Conectado a : " + conexion.getInetAddress().getHostName());
  96.  
  97. main.habilitarTexto(true); //permite escribir texto para enviar
  98.  
  99. //Ejecucion de los threads
  100. executor.execute(new Recibe(conexion, main)); //client
  101. executor.execute(new Envia(conexion, main));
  102. } catch (IOException ex) {
  103. Logger.getLogger(PrincipalChat.class.getName()).log(Level.SEVERE, null, ex);
  104. }
  105. }
  106. } catch (IOException ex) {
  107. Logger.getLogger(PrincipalChat.class.getName()).log(Level.SEVERE, null, ex);
  108. } //Fin del catch
  109. finally {
  110. }
  111. executor.shutdown();
  112. }
  113. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement