moved BudaClientServerStuff
This commit is contained in:
parent
e6e9caea6e
commit
251dc27c72
Binary file not shown.
Binary file not shown.
Binary file not shown.
3
.idea/misc.xml
generated
3
.idea/misc.xml
generated
@ -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>
|
||||||
29
Übung/BudaServerClientStuff/src/BudaClient.java
Normal file
29
Übung/BudaServerClientStuff/src/BudaClient.java
Normal 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();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
73
Übung/BudaServerClientStuff/src/BudaClientThread.java
Normal file
73
Übung/BudaServerClientStuff/src/BudaClientThread.java
Normal 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;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
25
Übung/BudaServerClientStuff/src/BudaServer.java
Normal file
25
Übung/BudaServerClientStuff/src/BudaServer.java
Normal 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.");
|
||||||
|
}
|
||||||
|
}
|
||||||
25
Übung/BudaServerClientStuff/src/ClientListener.java
Normal file
25
Übung/BudaServerClientStuff/src/ClientListener.java
Normal 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();
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
27
Übung/BudaServerClientStuff/src/ServerConnector.java
Normal file
27
Übung/BudaServerClientStuff/src/ServerConnector.java
Normal 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);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user