Android application to create UDP forwarders, hubs and other tools. To aid building VPNs, video streaming and other tricky network uses.
Build it using ./gradlew cargoBuild && ./gradlew assembleDebug
.
or get the APK from the Releases Section.
- Binding UDP socket on specified port and exchanging traffic between all known peers
- Exchanging traffic between multiple UDP sockets
- Remembering specified number of peers that have sent us some datagram, with optional expiration policy
- Directly specifying peers to send datagrams to. Combined with remembering, it allows using the application as UDP forwarder.
- Joining multicast groups, setting TTL, TOS, read and write buffer sizes and other socket options.
- Periodical sending of hardcoded datagrams to specified peers (e.g. to keep NAT open)
- Displaying of detailed statistics of the traffic
- Starting multiple isolated hubs, each with distinct set of ports. Can even act as a simplistic load balancer due to
SO_REUSEPORT
.
The application does not send datagrams back to sender.
- UI is not user-friendly.
- Not all features are exposed in GUI - you may want to add some undocumented fields to the JSON manually.
- Not very optimised for speed or latency. It may be slightly slower than
socat udp4-l udp
. - Not everything is tested yet
GUI has a button to simplify appending a JSON snippet for a port to the first hub. There is no removal function - you are expected to edit JSON youself to access to edit config or to access advanced features. It may make sense to use clipboard to copy the config out or into the application. Config JSON is not saved as a file to filesystem ("Save" button saves to Android preferences).
For a trickier setup it can also make sense to prepare a config outside mobile device. For this, you may want to use JSON schema of the configuration file. There are descriptions of all options in the schema (autogenerated from this source code file). Prepared config file may be transferred to the application e.g. by QR code (using external QR scanner app and the clipboard).