Hi,

I want to implement an UDP server and have problems on defining on how the server handles coming concurrent udp "connections" from multiple clients.
What I basically want to implement is an DNS proxy.

Is there something equivalent to an tcp::acceptor for udp ? Looking over asio docs I see:

template<
    typename Protocol,
    typename SocketAcceptorService = socket_acceptor_service<Protocol>>
class basic_socket_acceptor :
  public basic_io_object< SocketAcceptorService >,
  public socket_base

For tcp we have following typedef:

typedef basic_socket_acceptor< tcp > acceptor;
Can I use basic_socket_acceptor with socket_acceptor_service<UDP> so that I can create additional udp sockets for every udp client that wants to send data to my server ?
I've observed that if I use async_receive_from on the same socket I receive data from multiple clients making impossible exchanging data (read/write) with multiple clients at the same time.

Any hints are appreciated.

-Ghita