Будучи хорошо знакомым с клиент-серверными приложениями по UDP, я обычно использую шаблон наблюдателя, который очень полезен при получении пакетов из сети.Когда пакет приходит с удаленной машины, сокет принимает сообщение и передает его всем слушателям.Затем слушатели будут делать с полученными данными все, что хотят, как показано в примере ниже
public class MySocket {
private socket rawSocket;
private List<Listeners> dataListeners;
//.. Initialization
// This method gets called when data is received
public receive(byte[] data){
for(Listener listener : dataListeners) listener.processMessage(data);
}
public registerListener(Listener listener){
dataListeners.add(listener);
}
public unRegisterListener(Listener listener){
dataListeners.remove(listener);
}
}
// Interface listener to be implemented by whoever want to receive data from a socket
public interface Listener{
// Method to be implemented by any listener interested in receiving data
void ProcessMessage(byte[] data);
}
public class MyListener implements Listener{
@Override
public void processMessage(byte[] data){
// Do something with data...
}
}
// All bits put together
MySocket mySocket = new MySocket();
socket.registerListener(new MyListener());
// Class MyListener can now receive everything that comes from a remote machine through the socket "mySocket"
Надеюсь, это поможет, С уважением,