Parcourir la source

Changed to data stream for sending objects over network

jancoow il y a 10 ans
Parent
commit
c83dffb99b
2 fichiers modifiés avec 30 ajouts et 26 suppressions
  1. 23 21
      src/server/Server.java
  2. 7 5
      src/server/User.java

+ 23 - 21
src/server/Server.java

@@ -15,28 +15,30 @@ public class Server {
 		users = new ArrayList<User>();
 		messages = new ArrayList<Message>();
 		
-		ServerSocket server = null;
-		
-		try {
-			server = new ServerSocket(port);
-		} catch (IOException e) {
-			System.out.println("Something went wrong, abort.");
-			e.printStackTrace();
-		}	
-		
-		while(true){
-			System.out.println("Waiting for clients...");
-			Socket client = null;
-			try {
-				client = server.accept();
-			} catch (IOException e) {
-				e.printStackTrace();
+		Thread clientconnect = new Thread(new Runnable() {
+			@Override
+			public void run() {
+				try {
+					ServerSocket server = new ServerSocket(port);
+					while(true){
+						System.out.println("Waiting for clients...");
+						try {
+							Socket client = server.accept();
+							//TODO: Check in banned list and read username and color from reply message
+							users.add(new User("test", Color.red, client, Server.this));
+							System.out.println("New client connected: " + client.getRemoteSocketAddress());
+							System.out.println("Total users connected: " + users.size());
+						} catch (IOException e) {
+							e.printStackTrace();
+						}
+					}
+				} catch (IOException e) {
+					System.out.println("Something went wrong, abort.");
+					e.printStackTrace();
+				}
 			}
-			//TODO: Check in banned list and read username and color from reply message
-			users.add(new User("test", Color.red, client, this));
-			System.out.println("New client connected: " + client.getRemoteSocketAddress());
-			System.out.println("Total users connected: " + users.size());
-		}
+		});	
+		clientconnect.start();
 	}
 	
 	public synchronized void addMessage(Message message){

+ 7 - 5
src/server/User.java

@@ -4,15 +4,17 @@ import java.awt.Color;
 import java.io.DataInputStream;
 import java.io.DataOutputStream;
 import java.io.IOException;
+import java.io.ObjectInputStream;
+import java.io.ObjectOutputStream;
 import java.net.Socket;
 
 public class User {
 	private String username;
 	private Color color;
 	private Socket client;
-	
-	DataInputStream in;
-	DataOutputStream out;
+
+	private ObjectInputStream in;
+	private ObjectOutputStream out;
 	
 	public User(String username, Color color, Socket client, Server server){
 		this.username = username;
@@ -20,8 +22,8 @@ public class User {
 		this.client = client;
 		
 		try {
-			out = new DataOutputStream(client.getOutputStream());
-			in = new DataInputStream(client.getInputStream());
+			out = new ObjectOutputStream(client.getOutputStream());
+			in = new ObjectInputStream(client.getInputStream());
 		} catch (IOException e1) {
 			e1.printStackTrace();
 		}