Мне нужно отправлять и получать данные между клиентом и сервером. Сервер будет управлять несколькими клиентами одновременно, поэтому он должен иметь возможность отправлять и получать данные с небольшой задержкой.
В данный момент я могу отправлять и получать данные от клиента на сервер, но это делается процедурно, поэтому, если какие-либо данные будут потеряны, сервер остановится, пока клиент не отправит новые данные. Проблема в том, что если сервер возвращает данные, то и сервер, и клиент будут зависать в ожидании данных от другого.
Мои текущие методы получения и отправки данных
public void run(){
while(true){
byte[] data = new byte[1024];
DatagramPacket packet = new DatagramPacket(data, data.length);
try {
socket.receive(packet);
} catch (IOException e) {
e.printStackTrace();
}
System.out.println("SERVER > " +new String(packet.getData()));
}
}
public void sendData(byte[] data){
DatagramPacket packet = new DatagramPacket(data, data.length, 6969);
try {
socket.send(packet);
} catch (IOException e) {
e.printStackTrace();
}
}
В идеале мне хотелось бы что-то вроде ActionListener, которое позволит мне получать действие при получении данных. В данный момент он будет запускать пару тиков каждый раз, когда получает данные.