No description
Find a file
Stephen Seo 45580caf15
Some checks failed
Run UnitTests / build-and-run-tests (push) Failing after 55s
Update forgejo workflow to use libsodium
2024-07-12 17:00:12 +09:00
.forgejo/workflows Update forgejo workflow to use libsodium 2024-07-12 17:00:12 +09:00
.github/workflows Rework unit-tests to not use GTest 2024-07-12 15:54:56 +09:00
src Rework unit-tests to not use GTest 2024-07-12 15:54:56 +09:00
test_package Add conan related files and adapt CMakeLists.txt 2024-07-12 16:40:57 +09:00
.gitignore Add conan related files and adapt CMakeLists.txt 2024-07-12 16:40:57 +09:00
.gitmodules Remove unused TSQueue and RingBuffer 2019-11-06 14:42:35 +09:00
CMakeLists.txt Add conan related files and adapt CMakeLists.txt 2024-07-12 16:40:57 +09:00
conanfile.py Add conan related files and adapt CMakeLists.txt 2024-07-12 16:40:57 +09:00
Doxyfile Fix doxygen documentation 2020-01-13 19:22:08 +09:00
LICENSE Update LICENSE year 2024-01-11 21:05:21 +09:00
README.md Update README.md 2024-07-12 16:40:23 +09:00

UDPConnection

C++ conan package

Provides a network connection over UDP, with verification of packet support via libsodium (optional). Implemented in C++ (up to C++11 standard), but is available via a C api, which should facilitate creating bindings for other programming languages if needed.

This library is still a work in progress, so api breaking changes may happen in the future.
This library is usable. Try testing it out using the NetworkTest binary which is built when Debug builds are enabled (the default) with CMake.

$ ./NetworkTest
[-c | -s] - client or server (default server)
-ll <addr> - listen addr
-lp <port> - listen port
-cl <addr> - connection addr (client only)
-clh <hostname> - connection hostname (client only)
-cp <port> - connection port (client only)
-t <tick_count>
-n - do not add payload to packets
-l (silent|error|warning|info|verbose|debug) - log level, default debug
-e - enable receiving events
-ls - enable libsodium
-ck <pubkey_file> - add pubkey to whitelist
-sk <pubkey> <seckey> - start with pub/sec key pair
-p <"fallback" or "strict"> - set auth policy
--hostname <hostname> - dont run test, just lookup hostname

A typical test can be done with the following parameters:

Server:

./NetworkTest -s -ll ::1 -lp 9000 -t 50 -e

Client:

./NetworkTest -c -ll ::1 -lp 9001 -cl ::1 -cp 9000 -t 40 -e

NetworkTest gracefully shuts down on SIGINT (Ctrl-C).

The source of NetworkTest can be found in src/test/UDPC_NetworkTest.c.

Documentation

See the gh-pages generated Doxygen documentation here.

Alternatively, see the generated Doxygen documentation on my website.

Compiling

Release builds

mkdir buildRelease
cd buildRelease
cmake -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=/usr -DBUILD_SHARED_LIBS=True ..
make
make DESTDIR=install_destination install

Debug builds

mkdir buildDebug
cd buildDebug
cmake -DCMAKE_BUILD_TYPE=Debug ..
make

Usage

The program in src/test/UDPC_NetworkTest.c is used for testing UDPConnection and is also an example of using the library in a C program.

Debug Builds

NetworkTest only builds when CMAKE_BUILD_TYPE is Debug (default).

UnitTest only builds in Debug mode.

Links

https://github.com/Stephen-Seo/UDPConnection
https://git.seodisparate.com/stephenseo/UDPConnection

Other Notes

Inspired by a series of blog posts about networking for games.

Conan

conan packages of this library are available here.

The conan branch contains the necessary changes to publish this library as a conan package. Expect the conan branch to rebase on master in the future.