Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package Chat;
- import java.io.*;
- import java.net.*;
- import java.util.*;
- public class ClientHandler implements Runnable {
- Socket client;
- String username;
- Server server;
- //Konstruktor
- public ClientHandler(Socket client, Server server, String username){
- this.client = client;
- this.username = username;
- this.server = server;
- }
- //Methode, um den Username spter zurckzugeben
- public String getUsername() {
- return username;
- }
- //Runnable Methode der Klasse Clienthandler
- @Override
- public void run() {
- String text;
- try {
- //reader & writer
- BufferedReader reader = new BufferedReader(new InputStreamReader(client.getInputStream()));
- BufferedWriter writer = new BufferedWriter(new OutputStreamWriter(client.getOutputStream()));
- while (client.isConnected()) {
- if (this.client.getInputStream().available() > 0) {
- text = reader.readLine();
- System.out.println(username + ": " + text);
- final String msg = text;
- String temp = "";
- if(text != null) {
- //an einzelne Personen mit '@' schreiben
- if (text.charAt(0) == '@') { //Wenn die Nachricht '@' beinhaltet
- for (int i = 0; ' ' != text.charAt(i); i++) { //neuen String erzeugen -> nur Username mit '@' ohne Nachricht
- temp = temp + text.charAt(i);
- }
- for (int j = 0; j < this.server.getUser().size(); ++j) {
- if (temp.equalsIgnoreCase("@" + this.server.getUser().get(j).getUsername())) { //Username in ArrayList suchen -> wenn vorhanden, dann nur an diese Person schreiben
- this.server.getUser().get(j).sendMessage(msg, username); //Nachricht senden mit Aufruf der sendMessage-Methode
- }
- }
- } else { //Wenn die Nachricht KEIN '@' beinhaltet
- for(int x = 0;x < this.server.user.size(); x++){
- if(this.server.user.get(x).getUsername() != username) {
- this.server.user.get(x).sendMessage(msg, username);
- }
- }
- }
- }
- }
- }
- }
- catch(Exception e){
- e.printStackTrace();
- }
- }
- //Senden der eingegeben Nachricht inkl. Username
- public void sendMessage(String msg, String username){
- try{
- //writer
- BufferedWriter writer = new BufferedWriter(new OutputStreamWriter(client.getOutputStream()));
- //Nachricht mit Username schreiben
- writer.write( username + ": " + msg + "\n");
- writer.flush();
- }catch(Exception e){e.printStackTrace();}
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement