User.java 2.0 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788
  1. package server;
  2. import java.awt.Color;
  3. import java.io.IOException;
  4. import java.io.ObjectInputStream;
  5. import java.io.ObjectOutputStream;
  6. import java.net.Socket;
  7. import server.network.NetworkMessage;
  8. public class User {
  9. String username;
  10. Color color;
  11. private Socket client;
  12. private ObjectInputStream in;
  13. private ObjectOutputStream out;
  14. public User(String username, Color color, Socket client, Server server){
  15. this.username = username;
  16. this.color = color;
  17. this.client = client;
  18. try {
  19. out = new ObjectOutputStream(client.getOutputStream());
  20. in = new ObjectInputStream(client.getInputStream());
  21. } catch (IOException e1) {
  22. e1.printStackTrace();
  23. }
  24. Thread receivethread = new Thread(new Runnable() {
  25. @Override
  26. public void run() {
  27. while(true){
  28. try {
  29. try {
  30. Object objectinput = in.readObject();
  31. if(objectinput instanceof NetworkMessage){
  32. NetworkMessage input = (NetworkMessage)objectinput;
  33. setUsername(input.getUsername());
  34. setColor(input.getC());
  35. server.addMessage(new Message(input.getMessage(), User.this));
  36. }
  37. } catch (ClassNotFoundException e) {
  38. e.printStackTrace();
  39. }
  40. } catch (IOException e) {
  41. System.out.println("User disconnected: " + username + "from: " + client.getLocalSocketAddress());
  42. server.deleteUser(User.this);
  43. try {
  44. client.close();
  45. } catch (IOException e1) {
  46. e1.printStackTrace();
  47. }
  48. return;
  49. }
  50. }
  51. }
  52. });
  53. receivethread.start();
  54. }
  55. public void sendMessage(Message message){
  56. NetworkMessage nwmessage = new NetworkMessage(message.getMessage(), message.getUser().getColor(), message.getUser().getUsername());
  57. try {
  58. out.writeObject(nwmessage);
  59. } catch (IOException e) {
  60. e.printStackTrace();
  61. }
  62. }
  63. public Color getColor() {
  64. return color;
  65. }
  66. public String getUsername() {
  67. return username;
  68. }
  69. public void setUsername(String username) {
  70. this.username = username;
  71. }
  72. public void setColor(Color color) {
  73. this.color = color;
  74. }
  75. }