diff --git a/Übung/BudaServerClientStuff/.idea/.gitignore b/Übung/BudaServerClientStuff/.idea/.gitignore
new file mode 100644
index 0000000..13566b8
--- /dev/null
+++ b/Übung/BudaServerClientStuff/.idea/.gitignore
@@ -0,0 +1,8 @@
+# Default ignored files
+/shelf/
+/workspace.xml
+# Editor-based HTTP Client requests
+/httpRequests/
+# Datasource local storage ignored files
+/dataSources/
+/dataSources.local.xml
diff --git a/Übung/BudaServerClientStuff/.idea/misc.xml b/Übung/BudaServerClientStuff/.idea/misc.xml
new file mode 100644
index 0000000..e0844bc
--- /dev/null
+++ b/Übung/BudaServerClientStuff/.idea/misc.xml
@@ -0,0 +1,6 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git a/Übung/BudaServerClientStuff/.idea/modules.xml b/Übung/BudaServerClientStuff/.idea/modules.xml
new file mode 100644
index 0000000..470b584
--- /dev/null
+++ b/Übung/BudaServerClientStuff/.idea/modules.xml
@@ -0,0 +1,8 @@
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/Übung/BudaServerClientStuff/BudaServerClientStuff.iml b/Übung/BudaServerClientStuff/BudaServerClientStuff.iml
new file mode 100644
index 0000000..c90834f
--- /dev/null
+++ b/Übung/BudaServerClientStuff/BudaServerClientStuff.iml
@@ -0,0 +1,11 @@
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/Übung/BudaServerClientStuff/README.txt b/Übung/BudaServerClientStuff/README.txt
new file mode 100644
index 0000000..de5f14b
--- /dev/null
+++ b/Übung/BudaServerClientStuff/README.txt
@@ -0,0 +1,10 @@
+This is a demo of some (very basic) client / server functionality.
+Run BudaClient.java for the Client and BudaServer.java for the Server. Everything connects locally via port 8090
+
+Type "Name:Jonas B." to change the client's name to Jonas B (the "." is where the name stops).
+
+Type "Names" for the Server to display everyone who is connected along with their name (if they have set a name).
+
+Typing "Quitx" should quit everything but I havent quite managed to implement that yet so just repeatedly use ctrl+c to quit everything.
+
+-Jonas
\ No newline at end of file
diff --git a/Übung/BudaServerClientStuff/src/BudaClient.class b/Übung/BudaServerClientStuff/src/BudaClient.class
new file mode 100644
index 0000000..545f16f
Binary files /dev/null and b/Übung/BudaServerClientStuff/src/BudaClient.class differ
diff --git a/Übung/BudaServerClientStuff/src/BudaClient.java b/Übung/BudaServerClientStuff/src/BudaClient.java
new file mode 100644
index 0000000..0c74c5b
--- /dev/null
+++ b/Übung/BudaServerClientStuff/src/BudaClient.java
@@ -0,0 +1,29 @@
+
+import java.io.*;
+import java.net.Socket;
+
+public class BudaClient {
+ public static void main(String[] args) {
+ Socket sock = null;
+ try {
+ sock = new Socket("localhost", 8090);
+ OutputStream out= sock.getOutputStream();
+ BufferedReader conin = new BufferedReader(new InputStreamReader(System.in));
+ String line = "";
+ while (true) {
+ line = conin.readLine();
+ out.write(line.getBytes());
+ if (line.equalsIgnoreCase("Quitx")) {
+ break;
+ }
+ //line.startsWith() //todo: automatically handle name lengths
+ //TODO: Implement inputStream in.
+ }
+
+
+ } catch (IOException e) {
+ e.printStackTrace();
+ }
+ }
+
+}
diff --git a/Übung/BudaServerClientStuff/src/BudaClientThread.class b/Übung/BudaServerClientStuff/src/BudaClientThread.class
new file mode 100644
index 0000000..50219a9
Binary files /dev/null and b/Übung/BudaServerClientStuff/src/BudaClientThread.class differ
diff --git a/Übung/BudaServerClientStuff/src/BudaClientThread.java b/Übung/BudaServerClientStuff/src/BudaClientThread.java
new file mode 100644
index 0000000..9bd8066
--- /dev/null
+++ b/Übung/BudaServerClientStuff/src/BudaClientThread.java
@@ -0,0 +1,73 @@
+
+
+import java.io.IOException;
+import java.io.InputStream;
+import java.io.OutputStream;
+import java.net.Socket;
+
+public class BudaClientThread implements Runnable {
+ int number;
+ Socket socket;
+ String name;
+
+
+ public BudaClientThread(int number, Socket socket) {
+ this.number = number;
+ this.socket = socket;
+ name = "";
+ }
+
+ public void run() {
+ System.out.println("Connection " + number + " established.");
+ try {
+ InputStream in = socket.getInputStream();
+ OutputStream out = socket.getOutputStream();
+ byte[] command;
+ String comString;
+ while (true) {
+ command = new byte[5];
+ System.out.println("Waiting to receive a line");
+ in.read(command);
+ System.out.println("Got a line!");
+ comString = new String(command);
+ System.out.println("Client number " + number + " sent this message: " + comString);
+ if (comString.equalsIgnoreCase("Quitx")) {
+ BudaServer.quit = true;
+ System.out.println("I just set quit to true!");
+ break;
+ }
+
+ //todo: do as switch.
+
+ if (comString.equalsIgnoreCase("NAME:")) { //todo: implement these as methods?
+ setName(in);
+ }
+
+ if (comString.equalsIgnoreCase("NAMES")) {
+ printnames();
+ }
+ }
+ } catch (IOException e) {
+ e.printStackTrace();
+ }
+ }
+
+ public void printnames() {
+ for (BudaClientThread t: BudaServer.Clients) {
+ System.out.println(t.name + " connected (#" + t.number + ")");
+ }
+ }
+
+ public void setName(InputStream in) throws IOException {
+ //byte[] namebyte = new byte[0];
+ String nameString = "";
+ int i;
+ while (true) {
+ i = in.read();
+ if (i == 46) break;
+ nameString = nameString + (char) i;
+ }
+ this.name = nameString;
+ }
+
+}
diff --git a/Übung/BudaServerClientStuff/src/BudaServer.class b/Übung/BudaServerClientStuff/src/BudaServer.class
new file mode 100644
index 0000000..b0a564e
Binary files /dev/null and b/Übung/BudaServerClientStuff/src/BudaServer.class differ
diff --git a/Übung/BudaServerClientStuff/src/BudaServer.java b/Übung/BudaServerClientStuff/src/BudaServer.java
new file mode 100644
index 0000000..6e12148
--- /dev/null
+++ b/Übung/BudaServerClientStuff/src/BudaServer.java
@@ -0,0 +1,25 @@
+
+
+import java.io.IOException;
+import java.net.ServerSocket;
+import java.net.Socket;
+import java.util.HashSet;
+
+public class BudaServer {
+ public static boolean quit = false; //todo: meaningfully implement this
+ public static HashSet Clients = new HashSet();
+ static int connections = 0;
+
+ public static void main(String[] args) {
+ ServerConnector ServC = new ServerConnector();
+ Thread ServCThread = new Thread(ServC);
+ ServCThread.start();
+ System.out.println("Server has entered its main loop");
+ while (!quit) {
+ //Main server stuff goes here
+ }
+ //ServCThread.stop(); //todo: find some alternative for this.
+ System.out.println("stopping the main BudaServer thread.");
+ System.out.println("Quitting after the next connection is made.");
+ }
+}
diff --git a/Übung/BudaServerClientStuff/src/ClientListener.java b/Übung/BudaServerClientStuff/src/ClientListener.java
new file mode 100644
index 0000000..6fe4639
--- /dev/null
+++ b/Übung/BudaServerClientStuff/src/ClientListener.java
@@ -0,0 +1,25 @@
+import java.io.*;
+import java.net.Socket;
+
+public class ClientListener implements Runnable{
+ private final Socket sock;
+
+ public ClientListener(Socket sock) {
+ this.sock = sock;
+ }
+
+ public void run(){
+ byte[] command = new byte[5];
+ String comString;
+
+ try {
+ InputStream in = sock.getInputStream();
+ in.read(command);
+ System.out.println("Got a line!");
+ comString = new String(command);
+ } catch (IOException e) {
+ e.printStackTrace();
+
+ }
+ }
+}
diff --git a/Übung/BudaServerClientStuff/src/ServerConnector.class b/Übung/BudaServerClientStuff/src/ServerConnector.class
new file mode 100644
index 0000000..fa2ce96
Binary files /dev/null and b/Übung/BudaServerClientStuff/src/ServerConnector.class differ
diff --git a/Übung/BudaServerClientStuff/src/ServerConnector.java b/Übung/BudaServerClientStuff/src/ServerConnector.java
new file mode 100644
index 0000000..9833005
--- /dev/null
+++ b/Übung/BudaServerClientStuff/src/ServerConnector.java
@@ -0,0 +1,27 @@
+import java.io.IOException;
+import java.net.ServerSocket;
+import java.net.Socket;
+
+public class ServerConnector implements Runnable{
+ public void run() {
+ try {
+ System.out.println(
+ "Warte auf Verbindungen auf Port 8090...");
+ ServerSocket servSock = new ServerSocket(8090);
+ while (true) {
+ Socket socket = servSock.accept();
+ System.out.println("got a connection: socket " + BudaServer.connections + socket.toString());
+ BudaClientThread newClientThread = new BudaClientThread(++BudaServer.connections, socket);
+ BudaServer.Clients.add(newClientThread);
+ Thread bCT = new Thread(newClientThread);
+ bCT.start();
+ }
+ } catch (IOException e) {
+ System.out.println("server got an error");
+ System.err.println(e);
+ System.exit(1);
+ }
+
+
+ }
+}