Browse Source

Simple chat with testclient is working!

jancoow 10 năm trước cách đây
mục cha
commit
552c61550a
3 tập tin đã thay đổi với 45 bổ sung15 xóa
  1. 12 10
      src/clientest/Client.java
  2. 4 0
      src/server/Message.java
  3. 29 5
      src/server/User.java

+ 12 - 10
src/clientest/Client.java

@@ -5,7 +5,7 @@ import java.io.IOException;
 import java.io.ObjectInputStream;
 import java.io.ObjectOutputStream;
 import java.net.Socket;
-import java.net.UnknownHostException;
+import java.util.Scanner;
 
 import server.network.NetworkMessage;
 
@@ -21,7 +21,8 @@ public class Client {
 						input = new ObjectInputStream(client.getInputStream());
 						while(true){
 							try {
-								System.out.println(((NetworkMessage)input.readObject()).getMessage());
+								NetworkMessage m = (NetworkMessage)input.readObject();
+								System.out.println(m.getUsername() + ":  " +m.getMessage());
 							} catch (ClassNotFoundException e) {
 								e.printStackTrace();
 							}
@@ -32,20 +33,21 @@ public class Client {
 				}
 			});
 			test.start();
+			ObjectOutputStream out = new ObjectOutputStream(client.getOutputStream());
 			while(true){
-				ObjectOutputStream output = new ObjectOutputStream(client.getOutputStream());
-				output.writeObject(new NetworkMessage("Test", Color.BLUE, "Kenneth"));
+				Scanner input = new Scanner(System.in);
+				System.out.println("typ je bericht:");
+				String s = input.nextLine();
+				NetworkMessage nwmessage = new NetworkMessage(s, Color.red, "poepchinees");
 				try {
-					Thread.sleep(1000);
-				} catch (InterruptedException e) {
+					out.writeObject(nwmessage);
+					out.flush();
+				} catch (IOException e) {
 					e.printStackTrace();
 				}
 			}
-		} catch (UnknownHostException e) {
-			e.printStackTrace();
-		} catch (IOException e) {
+		}catch (IOException e) {
 			e.printStackTrace();
 		}
-
 	}
 }

+ 4 - 0
src/server/Message.java

@@ -20,6 +20,10 @@ public class Message {
 	public User getUser() {
 		return user;
 	}
+
+	public String getMessage() {
+		return message;
+	}
 	
 	
 }

+ 29 - 5
src/server/User.java

@@ -8,6 +8,9 @@ import java.io.ObjectInputStream;
 import java.io.ObjectOutputStream;
 import java.net.Socket;
 
+import server.network.NetworkMessage;
+import server.network.NetworkNotification;
+
 public class User {
 	private String username;
 	private Color color;
@@ -33,12 +36,24 @@ public class User {
 			public void run() {
 				while(true){
 					try {
-						in.readUTF();
-						//TODO: receive message from user according our protocol
-						server.addMessage(new Message("messageINPUT", User.this));
+						try {
+							Object objectinput = in.readObject();
+							if(objectinput instanceof NetworkMessage){
+								NetworkMessage input = (NetworkMessage)objectinput;
+								server.addMessage(new Message(input.getMessage(), User.this));
+							}
+						} catch (ClassNotFoundException e) {
+							e.printStackTrace();
+						}
 					} catch (IOException e) {
 						System.out.println("User disconnected: " + username + "from: " + client.getLocalSocketAddress());
 						server.deleteUser(User.this);
+						try {
+							client.close();
+						} catch (IOException e1) {
+							e1.printStackTrace();
+						}
+						return;						
 					}
 				}					
 			}
@@ -47,11 +62,20 @@ public class User {
 	}
 	
 	public void sendMessage(Message message){
+		NetworkMessage nwmessage = new NetworkMessage(message.getMessage(), message.getUser().getColor(), message.getUser().getUsername());
 		try {
-			out.writeUTF("messageOUT");
-			//TODO: send message to user according our protocol
+			out.writeObject(nwmessage);
 		} catch (IOException e) {
 			e.printStackTrace();
 		}
 	}
+
+	public Color getColor() {
+		return color;
+	}
+	public String getUsername() {
+		return username;
+	}
+	
+	
 }