Advertisement
Guest User

ClientHandler

a guest
May 20th, 2019
67
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 2.89 KB | None | 0 0
  1. package Chat;
  2.  
  3.  
  4. import java.io.*;
  5. import java.net.*;
  6. import java.util.*;
  7.  
  8. public class ClientHandler implements Runnable {
  9.   Socket client;
  10.   String username;
  11.   Server server;
  12.  
  13.   //Konstruktor
  14.   public ClientHandler(Socket client, Server server, String username){
  15.     this.client = client;
  16.     this.username = username;
  17.     this.server = server;
  18.   }
  19.  
  20.   //Methode, um den Username spter zurckzugeben
  21.   public String getUsername() {
  22.     return username;
  23.   }
  24.  
  25.   //Runnable Methode der Klasse Clienthandler
  26.   @Override
  27.   public void run() {
  28.    
  29.     String text;
  30.    
  31.     try {
  32.       //reader & writer
  33.       BufferedReader reader = new BufferedReader(new InputStreamReader(client.getInputStream()));
  34.       BufferedWriter writer = new BufferedWriter(new OutputStreamWriter(client.getOutputStream()));
  35.      
  36.       while (client.isConnected()) {
  37.         if (this.client.getInputStream().available() > 0) {
  38.           text = reader.readLine();
  39.           System.out.println(username + ": " + text);
  40.           final String msg = text;
  41.           String temp = "";
  42.           if(text != null) {
  43.             //an einzelne Personen mit '@' schreiben
  44.            
  45.             if (text.charAt(0) == '@') {                                                         //Wenn die Nachricht '@' beinhaltet
  46.               for (int i = 0; ' ' != text.charAt(i); i++) {                                      //neuen String erzeugen  -> nur Username mit '@' ohne Nachricht
  47.                 temp = temp + text.charAt(i);
  48.               }
  49.               for (int j = 0; j < this.server.getUser().size(); ++j) {
  50.                 if (temp.equalsIgnoreCase("@" + this.server.getUser().get(j).getUsername())) {   //Username in ArrayList suchen -> wenn vorhanden, dann nur an diese Person schreiben
  51.                   this.server.getUser().get(j).sendMessage(msg, username);                       //Nachricht senden mit Aufruf der sendMessage-Methode
  52.                 }
  53.               }
  54.             } else {                                                                             //Wenn die Nachricht KEIN '@' beinhaltet
  55.               for(int x = 0;x < this.server.user.size(); x++){
  56.                 if(this.server.user.get(x).getUsername() != username) {
  57.                   this.server.user.get(x).sendMessage(msg, username);
  58.                 }
  59.               }
  60.             }
  61.           }
  62.          
  63.          
  64.         }
  65.       }
  66.     }
  67.     catch(Exception e){
  68.       e.printStackTrace();
  69.     }
  70.   }
  71.  
  72.   //Senden der eingegeben Nachricht inkl. Username
  73.   public void sendMessage(String msg, String username){
  74.     try{
  75.       //writer
  76.       BufferedWriter writer = new BufferedWriter(new OutputStreamWriter(client.getOutputStream()));
  77.      
  78.       //Nachricht mit Username schreiben
  79.       writer.write( username + ": " + msg + "\n");
  80.       writer.flush();
  81.      
  82.     }catch(Exception e){e.printStackTrace();}
  83.   }
  84. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement