Selaa lähdekoodia

Fixed code structure

Kenneth van Ewijk 10 vuotta sitten
vanhempi
commit
ad98f8b602
2 muutettua tiedostoa jossa 37 lisäystä ja 20 poistoa
  1. 22 12
      src/server/Server.java
  2. 15 8
      src/server/User.java

+ 22 - 12
src/server/Server.java

@@ -10,26 +10,36 @@ public class Server {
 	private ArrayList<User> users;
 	private ArrayList<Message> messages;
 	
-	public Server(int port){
+	public Server(int port)
+	{
 		users = new ArrayList<User>();
 		messages = new ArrayList<Message>();
+		
+		ServerSocket server = null;
+		
 		try {
-			ServerSocket serverSocket = new ServerSocket(port);
-			while(true){
-				System.out.println("Waiting for clients...");
-				Socket client = serverSocket.accept();
-				//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());
-			}
+			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();
+			}
+			//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());
+		}
 	}
 	
-	public void addMessage(Message message){
+	public synchronized void addMessage(Message message){
 		messages.add(message);
 		for(User u:users){
 			if(message.getUser() != u)

+ 15 - 8
src/server/User.java

@@ -11,22 +11,32 @@ public class User {
 	private Color color;
 	private Socket client;
 	
+	DataInputStream in;
+	DataOutputStream out;
+	
 	public User(String username, Color color, Socket client, Server server){
 		this.username = username;
 		this.color = color;
 		this.client = client;
+		
+		try {
+			out = new DataOutputStream(client.getOutputStream());
+			in = new DataInputStream(client.getInputStream());
+		} catch (IOException e1) {
+			e1.printStackTrace();
+		}
+		
 		Thread receivethread = new Thread(new Runnable() {
 			@Override
 			public void run() {
-				try {
-					DataInputStream in = new DataInputStream(client.getInputStream());
-					while(true){
+				while(true){
+					try {
 						in.readUTF();
 						//TODO: receive message from user according our protocol
 						server.addMessage(new Message("messageINPUT", User.this));
+					} catch (IOException e) {
+						e.printStackTrace();
 					}
-				} catch (IOException e) {
-					e.printStackTrace();
 				}					
 			}
 		});
@@ -35,13 +45,10 @@ public class User {
 	
 	public void sendMessage(Message message){
 		try {
-			DataOutputStream out = new DataOutputStream(client.getOutputStream());
 			out.writeUTF("messageOUT");
 			//TODO: send message to user according our protocol
 		} catch (IOException e) {
 			e.printStackTrace();
 		}
-		
 	}
-	
 }