Questo sito utilizza cookies solo per scopi di autenticazione sul sito e nient'altro. Nessuna informazione personale viene tracciata. Leggi l'informativa sui cookies.
Username: Password: oppure
JChat - Server.java

Server.java

Caricato da:
Scarica il programma completo

  1. /*
  2.  * To change this template, choose Tools | Templates
  3.  * and open the template in the editor.
  4.  */
  5. package serverchat;
  6.  
  7. import java.io.BufferedReader;
  8. import java.io.DataOutputStream;
  9. import java.io.IOException;
  10. import java.io.InputStreamReader;
  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.  
  17. /**
  18.  *
  19.  * @author paolo
  20.  */
  21. public class Server extends Thread {
  22.  
  23.     private ArrayList<ParallelServer> clients;
  24.  
  25.     private class ParallelServer extends Thread {
  26.         private Socket sock;
  27.         private BufferedReader reader;
  28.         private DataOutputStream printer;
  29.  
  30.         public ParallelServer(Socket clientAccept) {
  31.             this.sock=clientAccept;
  32.             try {
  33.                 this.reader = new BufferedReader(new InputStreamReader(this.sock.getInputStream()));
  34.                 this.printer= new DataOutputStream(this.sock.getOutputStream());
  35.             } catch (IOException ex) {
  36.             }
  37.         }
  38.  
  39.         public String readLine(){
  40.             String line=null;
  41.             try {
  42.                 line = this.reader.readLine();
  43.             } catch (IOException ex) {
  44.             }
  45.             return line;
  46.         }
  47.  
  48.         public void writeLine(String line){
  49.             try {
  50.                 this.printer.writeBytes(line + "\n");
  51.             } catch (IOException ex) {
  52.             }
  53.         }
  54.  
  55.         @Override
  56.         public void run() {
  57.             String line=null;
  58.             while((line=this.readLine())!=null){
  59.                 String cmd=line.substring(0, 3);
  60.                 if(!cmd.equalsIgnoreCase("SEND")){
  61.                     for(int i=0; i<clients.size(); i++){
  62.                         clients.get(i).writeLine(line);
  63.                     }
  64.                 }
  65.             }
  66.         }
  67.     }
  68.  
  69.     public Server() {
  70.         this.clients = new ArrayList<ParallelServer>();
  71.     }
  72.  
  73.     @Override
  74.     public void run() {
  75.         try {
  76.             ServerSocket server = new ServerSocket(2223);
  77.             while (true) {
  78.                 Socket clientAccept = server.accept();
  79.                 ParallelServer client= new ParallelServer(clientAccept);
  80.                 client.start();
  81.                 this.clients.add(client);
  82.             }
  83.         } catch (IOException ex) {
  84.             Logger.getLogger(Server.class.getName()).log(Level.SEVERE, null, ex);
  85.         }
  86.  
  87.     }
  88.  
  89.     public static void main(String[] args) {
  90.         /*try {
  91.         ServerSocket server = new ServerSocket(2222);
  92.         Socket client = server.accept();
  93.         BufferedReader in = new BufferedReader(new InputStreamReader(client.getInputStream()));
  94.         PrintWriter out = new PrintWriter(client.getOutputStream(), true);
  95.         String letto = in.readLine();
  96.         while (!letto.equals("fine")) {
  97.         out.println(letto);
  98.         letto = in.readLine();
  99.         }
  100.         } catch (IOException ex) {
  101.         Logger.getLogger(Server.class.getName()).log(Level.SEVERE, null, ex);
  102.         }*/
  103.         new Server().start();
  104.     }
  105. }