An experimental asynchronous file server and client built on io_uring, serving a target directory over the network with efficient file listing and retrieval via completion-based I/O.
My goal is to learn and experiment with io_uring for asynchronous I/O and networking, build a modern asynchronous architecture based on it, and develop a minimal, high-performance networking system.
Server:
- Async I/O using io_uring & efficient multi-client handling (Connection pool)
- Fetch & Download files from server
- Directory traversal prevention
Commands :
./rinngfs server -h
./ringfs client -h
Requirements:
- Linux kernel 5.6+ (for io_uring)
- GCC or Clangient -g 127.0.0.1:8080 fi
- liburing
Build:
$ mkdir build
$ cd build
$ cmake ..
$ make -j$(nproc)Run server:
$ ./ringfs server -p 8080 -d /path/to/serveRun client:
./ringfs client -l 127.0.0.1:8080./ringfs client -g 127.0.0.1:8080 file.txtThis project is licensed under the GNU General Public License v2.0 (GPL-2.0) or later. You can redistribute and/or modify this software under the terms of the GPL as published by the Free Software Foundation.
For details, see the LICENSE file included with this project.
Nafh4x - 2026