Jelajahi Sumber

Merge remote-tracking branch 'origin/develop' into develop

Kenneth van Ewijk 10 tahun lalu
induk
melakukan
de61629648

+ 2 - 1
.classpath

@@ -1,6 +1,7 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <classpath>
 	<classpathentry kind="src" path="src"/>
-	<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/java-8-openjdk"/>
+	<classpathentry kind="src" path="server"/>
+	<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/java-8-openjdk-amd64"/>
 	<classpathentry kind="output" path="bin"/>
 </classpath>

+ 9 - 0
server/server/Main.java

@@ -0,0 +1,9 @@
+package server;
+
+public class Main {
+
+	public static void main(String[] args) {
+		new Server(1234);
+	}
+
+}

+ 9 - 0
server/server/Match.java

@@ -0,0 +1,9 @@
+package server;
+
+public class Match {
+	private NetworkUser nwuser1, nwuser2;
+	
+	public Match(NetworkUser nwuser1, NetworkUser nwuser2){
+		
+	}
+}

+ 42 - 0
server/server/NetworkUser.java

@@ -0,0 +1,42 @@
+package server;
+
+import java.io.IOException;
+import java.io.InputStream;
+import java.io.OutputStream;
+import java.net.Socket;
+
+public class NetworkUser {
+	private String name;
+	private Socket client;
+	private InputStream input;
+	private OutputStream output;
+	
+	public NetworkUser(String username, Socket client){
+		this.name = username;
+		this.client = client;
+		try {
+			input = client.getInputStream();
+			output = client.getOutputStream();
+		} catch (IOException e) {
+			System.err.println("Somethings nasty happends with a user");
+		}
+	}
+
+	/* GETTERS AND SETTERS */
+	
+	/**
+	 * @return the name of the user
+	 */
+	public String getName() {
+		return name;
+	}
+	
+	public boolean checkConnection(){
+		try {
+			output.write(0);
+		} catch (IOException e) {
+			return false;
+		} 
+		return true;
+	}
+}

+ 58 - 0
server/server/Server.java

@@ -0,0 +1,58 @@
+package server;
+
+import java.io.DataInputStream;
+import java.io.IOException;
+import java.net.ServerSocket;
+import java.net.Socket;
+import java.util.ArrayList;
+import java.util.Iterator;
+
+
+public class Server {
+	private ArrayList<NetworkUser> matchMakingUsers;
+	
+	public Server(final int port)
+	{
+		matchMakingUsers = new ArrayList<NetworkUser>();
+		
+		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();
+							
+							//Wait until user has send his username (timeout of 5 seconds)
+							DataInputStream input= new DataInputStream(client.getInputStream());
+							client.setSoTimeout(5000);
+							matchMakingUsers.add(new NetworkUser(input.readUTF(), client));
+							
+							//Check if all users in the matchMakingList are still connected
+							Iterator<NetworkUser> i = matchMakingUsers.iterator();
+							while(i.hasNext()){
+								if(!i.next().checkConnection()){
+									i.remove();
+								}
+							}
+							
+							//Check if there are enough players to make a match
+							if(matchMakingUsers.size()  >= 2){
+								new Match(matchMakingUsers.get(0), matchMakingUsers.get(1));
+							}
+							
+							System.out.println("New client connected: " + client.getRemoteSocketAddress());
+						} catch (IOException e) {
+							e.printStackTrace();
+						}
+					}
+				} catch (IOException e) {
+					e.printStackTrace();
+				}
+			}
+		});	
+		clientconnect.start();		
+	}
+}

+ 36 - 0
src/model/NetworkConnection.java

@@ -0,0 +1,36 @@
+package model;
+
+import java.io.DataInputStream;
+import java.io.DataOutputStream;
+import java.io.IOException;
+import java.net.Socket;
+import java.net.UnknownHostException;
+
+public class NetworkConnection {
+	private static final int port = 1234;
+	private static final String address = "62.195.226.247";
+	private DataOutputStream dout;
+	private DataInputStream din;
+	
+	
+	
+	public void connect(String name) throws UnknownHostException, IOException{
+		if(checkConnection()){
+			throw new IOException("Already connected!");
+		}
+		Socket server = new Socket(address , port);
+		dout = new DataOutputStream(server.getOutputStream());
+		din = new DataInputStream(server.getInputStream());
+		dout.writeUTF(name);
+	}
+	
+	public boolean checkConnection(){
+		try {
+			dout.write(0);
+		} catch (IOException e) {
+			return false;
+		} 
+		return true;
+	}
+	
+}

+ 1 - 1
src/model/state/PlayState.java

@@ -12,7 +12,6 @@ import java.util.ConcurrentModificationException;
 import java.util.List;
 import java.util.ListIterator;
 
-import main.Main;
 import model.GameStateManager;
 import model.InfoPanel;
 import model.levels.Level;
@@ -21,6 +20,7 @@ import model.objects.Player;
 import model.objects.ShootingLine;
 import resources.image.Images;
 import resources.image.Images.ImageType;
+import server.Main;
 
 public class PlayState extends State{