moved BudaClientServerStuff

This commit is contained in:
Jonas 2022-03-14 13:56:49 +01:00
parent e6e9caea6e
commit 251dc27c72
19 changed files with 182 additions and 0 deletions

3
.idea/misc.xml generated
View File

@ -1,5 +1,8 @@
<?xml version="1.0" encoding="UTF-8"?> <?xml version="1.0" encoding="UTF-8"?>
<project version="4"> <project version="4">
<component name="ExternalStorageConfigurationManager" enabled="true" /> <component name="ExternalStorageConfigurationManager" enabled="true" />
<component name="FrameworkDetectionExcludesConfiguration">
<file type="web" url="file://$PROJECT_DIR$" />
</component>
<component name="ProjectRootManager" version="2" languageLevel="JDK_11" default="true" project-jdk-name="jbr-11" project-jdk-type="JavaSDK" /> <component name="ProjectRootManager" version="2" languageLevel="JDK_11" default="true" project-jdk-name="jbr-11" project-jdk-type="JavaSDK" />
</project> </project>

View File

@ -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();
}
}
}

View File

@ -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;
}
}

View File

@ -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<BudaClientThread> Clients = new HashSet<BudaClientThread>();
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.");
}
}

View File

@ -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();
}
}
}

View File

@ -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);
}
}
}