Advertisement
Guest User

Untitled

a guest
Apr 17th, 2014
60
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.90 KB | None | 0 0
  1. /*
  2. * To change this template, choose Tools | Templates
  3. * and open the template in the editor.
  4. */
  5. package edu.lamk.tl.server;
  6.  
  7. import java.io.DataInputStream;
  8. import java.io.DataOutputStream;
  9. import java.io.IOException;
  10. import java.net.Socket;
  11. import java.util.ArrayList;
  12. import java.util.Iterator;
  13. import java.util.logging.Level;
  14. import java.util.logging.Logger;
  15.  
  16. /**
  17. *
  18. * @author halmnik1
  19. */
  20. public class ChatHandler extends Thread{
  21. Socket socket;
  22. DataInputStream in = null;
  23. DataOutputStream out = null;
  24. String name;
  25.  
  26. static protected final ArrayList<ChatHandler>chatters =
  27. new ArrayList<ChatHandler>();
  28.  
  29. public ChatHandler(String name, Socket socket) throws IOException{
  30. this.name = name;
  31. this.socket = socket;
  32. in = new DataInputStream(socket.getInputStream());
  33. out = new DataOutputStream(socket.getOutputStream());
  34. }
  35.  
  36. @Override
  37. public void run() {
  38. try{
  39. broadcast( name +" entered!");
  40. synchronized(chatters){
  41. chatters.add(this);
  42. }
  43. while(true){
  44. String msg = in.readUTF();
  45. broadcast(name + ": "+msg);
  46. }
  47. } catch(IOException ex){
  48. System.out.println("--Connection to user "+name+" is lost--");
  49. }
  50.  
  51. }
  52.  
  53. private void broadcast(String msg) {
  54. synchronized(chatters){
  55. Iterator<ChatHandler> iter = chatters.iterator();
  56.  
  57. while(iter.hasNext()){
  58. ChatHandler handler = iter.next();
  59. try {
  60.  
  61. handler.out.writeUTF(msg);
  62. handler.out.flush();
  63. } catch (IOException ex) {
  64. System.out.println("--Broadcast failed "+ handler.name);
  65. iter.remove();
  66. }
  67. }
  68.  
  69. }
  70. }
  71. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement