Rework UDP transport
Current implementation uses one socket for sending and receiving data instead of separate sockets. Data (de-)encapsulation is currently done by user, library itself should handle it.
Current implementation uses one socket for sending and receiving data instead of separate sockets. Data (de-)encapsulation is currently done by user, library itself should handle it.