Added first discovery implementation and test client
parent
9b2775d8ae
commit
61017aee73
|
|
@ -0,0 +1,32 @@
|
||||||
|
package vs;
|
||||||
|
|
||||||
|
import java.io.IOException;
|
||||||
|
import java.net.DatagramPacket;
|
||||||
|
import java.net.DatagramSocket;
|
||||||
|
import java.net.InetAddress;
|
||||||
|
|
||||||
|
public class Client {
|
||||||
|
public static void main(String[] args) {
|
||||||
|
try (DatagramSocket socket = new DatagramSocket()) {
|
||||||
|
socket.setBroadcast(true);
|
||||||
|
String message = "DISCOVER_SERVERS";
|
||||||
|
byte[] buffer = message.getBytes();
|
||||||
|
|
||||||
|
InetAddress broadcastAddress = InetAddress.getByName("255.255.255.255");
|
||||||
|
int port = 8888;
|
||||||
|
|
||||||
|
DatagramPacket packetOut = new DatagramPacket(buffer, buffer.length, broadcastAddress, port);
|
||||||
|
|
||||||
|
socket.send(packetOut);
|
||||||
|
|
||||||
|
DatagramPacket packetIn = new DatagramPacket(new byte[512], 512);
|
||||||
|
socket.receive(packetIn);
|
||||||
|
|
||||||
|
String received = new String(packetIn.getData(), 0, packetIn.getLength());
|
||||||
|
System.out.println("Received: " + received + "IP: " + packetIn.getSocketAddress());
|
||||||
|
}
|
||||||
|
catch (IOException e) {
|
||||||
|
e.printStackTrace();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
@ -12,18 +12,22 @@ public class Server {
|
||||||
private static final ExecutorService executor = Executors.newFixedThreadPool(2);
|
private static final ExecutorService executor = Executors.newFixedThreadPool(2);
|
||||||
|
|
||||||
public interface PacketHandler {
|
public interface PacketHandler {
|
||||||
void handlePacket(DatagramSocket socket, DatagramPacket packet, String serviceName);
|
void handlePacket(DatagramSocket socket, DatagramPacket packet, String serviceName) throws IOException;
|
||||||
}
|
}
|
||||||
|
|
||||||
public static void main(String[] args) {
|
public static void main(String[] args) {
|
||||||
startSocket(new DiscoveryHandler(), 8888, "Discovery Service");
|
startSocket(new DiscoveryHandler(), 8888, "Discovery Service", 1);
|
||||||
startSocket(new SyslogHandler(), 8887, "Logging Service"); //? Port geraten idk
|
startSocket(new SyslogHandler(), 514, "Logging Service", 2);
|
||||||
}
|
}
|
||||||
|
|
||||||
private static void startSocket(PacketHandler handler, int port, String serviceName) {
|
private static void startSocket(PacketHandler handler, int port, String serviceName, int serviceID) {
|
||||||
executor.execute(() -> {
|
executor.execute(() -> {
|
||||||
try (DatagramSocket socket = new DatagramSocket(port)) {
|
try (DatagramSocket socket = new DatagramSocket(port)) {
|
||||||
DatagramPacket packetIn = new DatagramPacket(new byte[BUFFSIZE], BUFFSIZE); //? Nicht sicher ob die Arguments richtig sind
|
if (serviceID == 1) {
|
||||||
|
socket.setBroadcast(true);
|
||||||
|
}
|
||||||
|
|
||||||
|
DatagramPacket packetIn = new DatagramPacket(new byte[BUFFSIZE], BUFFSIZE);
|
||||||
|
|
||||||
System.out.println(serviceName + " listening on port " + port);
|
System.out.println(serviceName + " listening on port " + port);
|
||||||
|
|
||||||
|
|
@ -42,15 +46,23 @@ public class Server {
|
||||||
|
|
||||||
static class SyslogHandler implements PacketHandler {
|
static class SyslogHandler implements PacketHandler {
|
||||||
@Override
|
@Override
|
||||||
public void handlePacket(DatagramSocket socket, DatagramPacket packet, String serviceName) {
|
public void handlePacket(DatagramSocket socket, DatagramPacket packetIn, String serviceName) {
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
static class DiscoveryHandler implements PacketHandler {
|
static class DiscoveryHandler implements PacketHandler {
|
||||||
@Override
|
@Override
|
||||||
public void handlePacket(DatagramSocket socket, DatagramPacket packet, String serviceName) {
|
public void handlePacket(DatagramSocket socket, DatagramPacket packetIn, String serviceName) throws IOException {
|
||||||
|
DatagramPacket packetOut = new DatagramPacket(new byte[BUFFSIZE], BUFFSIZE);
|
||||||
|
|
||||||
|
packetOut.setSocketAddress(packetIn.getSocketAddress());
|
||||||
|
packetOut.setData(new byte[0]);
|
||||||
|
packetOut.setLength(0);
|
||||||
|
|
||||||
|
System.out.println("Found client, responding");
|
||||||
|
|
||||||
|
socket.send(packetOut);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue