Hallo,
hast du es denn schonmal versucht einfach so zu programmieren? Wenn das bearbeiten der Antwortpakete kein großer aufwand ist, dann sollte das auch ohne spezielle Server gehen denke ich, da ein Netzwerk ein serielles System ist und somit die Rechner, welche die Antwort schicken sollen, dies auch nur nacheinander tun können. Da das ganze bei der heutigen Technik nur ein paar Milisekunden oder weniger dauert kommt es einem nur so vor, als ob es gleichzeitig geschieht. Man muss sich aber immer vor Auge halten, wie ein PC überhaupt tickt und in welcher Geschwindigkeit er das tut. die meisten Operationen, dauern nicht mal eine Milisekude.
Edit:
Du könntest alternativ vielleicht die empfangenen Datenpakete in einer ArrayList spreichern und diese erst durcharbeiten, wenn du über das Netzwerk für eine bestimmte Zeit keine Pakete mehr erhälst. Möglich währe das durch die setSoTimeout(timeout) methode. Wenn die Zeit abläuft wird eine Exception geworfen, durch die du dann eine Funktion zum Abarbeiten der Daten aufrufen kannst. Dadurch sollte es ohne großen Aufwand auf jeden Fall funktionieren
Edit 2:
Hier ein Beispiel, wie ich mir es vorgestellt habe:
Java:
import java.io.IOException;
import java.net.DatagramPacket;
import java.net.DatagramSocket;
import java.net.SocketTimeoutException;
import java.util.ArrayList;
public class Foo {
public static final int PORT = 1234;
public static final int TIMEOUT = 500;
public static final int BUFFER_SIZE = 10*1024;
public static void main(String[] args) throws IOException {
ArrayList<DatagramPacket> cachedPackets = new ArrayList<DatagramPacket>();
DatagramSocket socket = new DatagramSocket(PORT);
socket.setSoTimeout(TIMEOUT);
try {
while(true) {
DatagramPacket packet = new DatagramPacket(new byte[BUFFER_SIZE], 0, BUFFER_SIZE);
socket.receive(packet);
cachedPackets.add(packet);
}
} catch (SocketTimeoutException e) {
handleReceivedPackets(cachedPackets);
}
}
private static void handleReceivedPackets(
ArrayList<DatagramPacket> cachedPackets) {
// Daten verarbeiten
}
}