diff --git a/src/ClientHandler.java b/src/ClientHandler.java
new file mode 100644
index 0000000000000000000000000000000000000000..5fc875c4f0b1ad32938b189e88d213c6fd035acb
--- /dev/null
+++ b/src/ClientHandler.java
@@ -0,0 +1,32 @@
+import java.io.DataInputStream;
+import java.io.DataOutputStream;
+import java.io.IOException;
+import java.net.Socket;
+
+public class ClientHandler {
+    private Socket socket;
+    private DataOutputStream dataOutputStream;
+    private DataInputStream dataInputStream;
+
+    public ClientHandler(Socket client) throws Exception {
+        if (client == null)
+            throw new Exception("client can't be null");
+        this.socket = client;
+        dataOutputStream = new DataOutputStream(client.getOutputStream());
+        dataInputStream = new DataInputStream(client.getInputStream());
+        run();
+    }
+    private void handleIncomingMessages(String message){
+        //TODO: implement this method
+    }
+    public void run() {
+        while(true){
+            try {
+                String input = dataInputStream.readUTF();
+                handleIncomingMessages(input);
+            } catch (IOException e) {
+                e.printStackTrace();
+            }
+        }
+    }
+}
diff --git a/src/Server.java b/src/Server.java
new file mode 100644
index 0000000000000000000000000000000000000000..bdee82b3e4daad2effbff619e3b4e1e61d1beffe
--- /dev/null
+++ b/src/Server.java
@@ -0,0 +1,19 @@
+import java.io.IOException;
+import java.net.ServerSocket;
+import java.net.Socket;
+import java.util.ArrayList;
+
+public class Server {
+    private static final int PORT = 4321;
+    private ServerSocket serverSocket;
+    private ArrayList<String>user;
+    public Server() throws Exception {
+        serverSocket = new ServerSocket(PORT);
+        user=new ArrayList<>();
+
+        while (true) {
+            Socket client = serverSocket.accept();
+            ClientHandler clientHandler = new ClientHandler(client);
+        }
+    }
+}
\ No newline at end of file