Advertisement
Wesley_Alves

Classe Servidor

Dec 9th, 2016
114
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 2.69 KB | None | 0 0
  1. package br.com.uol.xpg.wyalves.chat2;
  2.  
  3. import java.io.BufferedReader;
  4. import java.io.BufferedWriter;
  5. import java.io.IOException;
  6. import java.io.InputStream;
  7. import java.io.InputStreamReader;
  8. import java.io.OutputStream;
  9. import java.io.OutputStreamWriter;
  10. import java.io.Writer;
  11. import java.net.ServerSocket;
  12. import java.net.Socket;
  13. import java.util.ArrayList;
  14. import java.util.logging.Level;
  15. import java.util.logging.Logger;
  16. import javax.swing.JLabel;
  17. import javax.swing.JOptionPane;
  18. import javax.swing.JTextField;
  19.  
  20. public class Server extends Thread {
  21.  
  22.     private static ArrayList<BufferedWriter> clients;
  23.     private static ServerSocket server;
  24.     private Socket client;
  25.     private String name;
  26.     private InputStream in;
  27.     private InputStreamReader inr;
  28.     private BufferedReader bfr;
  29.  
  30.     public Server(Socket client) {
  31.         this.client = client;
  32.         try {
  33.             in = client.getInputStream();
  34.             inr = new InputStreamReader(in);
  35.             bfr = new BufferedReader(inr);
  36.         } catch (Exception e1) {
  37.             Logger.getLogger(Server.class.getName()).log(Level.SEVERE, null, e1);
  38.         }
  39.     }
  40.  
  41.     public void run() {
  42.         try {
  43.             OutputStream out = this.client.getOutputStream();
  44.             Writer outw = new OutputStreamWriter(out);
  45.             BufferedWriter bfw = new BufferedWriter(outw);
  46.             clients.add(bfw);
  47.  
  48.             String msg = name = bfr.readLine();
  49.             while (!"Sair!".equalsIgnoreCase(msg) && msg != null) {
  50.                 msg = bfr.readLine();
  51.                 sendToAll(bfw, msg);
  52.                 System.out.println(msg);
  53.             }
  54.         } catch (Exception e2) {
  55.             Logger.getLogger(Server.class.getName()).log(Level.SEVERE, null, e2);
  56.         }
  57.     }
  58.  
  59.     private void sendToAll(BufferedWriter bwSaida, String msg) {
  60.         try {
  61.             BufferedWriter bwS;
  62.  
  63.             for (BufferedWriter bw : clients) {
  64.                 bwS = bw;
  65.                 if (!(bwSaida == bwS)) {
  66.                     bw.write(name + " -> " + msg + "\r\n");
  67.                     bw.flush();
  68.                 }
  69.             }
  70.         } catch (IOException e3) {
  71.             Logger.getLogger(Server.class.getName()).log(Level.SEVERE, null, e3);
  72.         }
  73.     }
  74.  
  75.     public static void main(String[] args) {
  76.         try {
  77.             JLabel lblMsg = new JLabel("Porta do Servidor: ");
  78.             JTextField txtPort = new JTextField("12345");
  79.             Object[] texts = { lblMsg, txtPort };
  80.             JOptionPane.showMessageDialog(null, texts);
  81.             server = new ServerSocket(Integer.parseInt(txtPort.getText()));
  82.             clients = new ArrayList<BufferedWriter>();
  83.             JOptionPane.showMessageDialog(null, "Servidor ativo na porta: " + txtPort.getText());
  84.  
  85.             while (true) {
  86.                 System.out.println("Aguradando conexão...");
  87.                 Socket client = server.accept();
  88.                 System.out.println("Cliente conectado...");
  89.                 Thread t = new Server(client);
  90.                 t.start();
  91.             }
  92.         } catch (Exception e4) {
  93.             Logger.getLogger(Server.class.getName()).log(Level.SEVERE, null, e4);
  94.         }
  95.     }
  96. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement