A fast, asynchronous implementation of Pixelflut.
- Uses GLFW and GLEW (optional) to display the buffer
- Uses epoll on linux or asio (boost or standalone) for networking
- Uses FreeType to draw IP address, port, etc., to buffer (optional)
Using epoll, each open TCP connection only takes 8 bytes of user space memory.
epoll can be used edge triggered, but level triggered (default) seems to be fairer across multiple connections.
$ mkdir build
$ cd build
$ cmake -DCMAKE_BUILD_TYPE=Release ..
$ make
$ ./pixelflood
If GLFW is not installed or not found, fbdev display will be used which requires exclusive framebuffer access on /dev/fb0
. That's more suitable for embedded systems. Probably, you want to make sure GLFW is found (see CMake output).
On most systems, one process can't open more than 1024 files (max 1024 connections). To allow more connections, add /etc/security/limits.d/90-pixelflood.conf
containing:
pxuser hard nofile 1000000
Replace pxuser
with the username of the user running pixelflood, and execute
$ ulimit -n 1000000
in the shell before starting ./pixelflood
. This will allow about 1000000 connections. To see the maximum settable number of open files, read /proc/sys/fs/file-max
.
- Esc: exit
- Del: reset and rescale canvas to window size, close open connections
- Rotating device resets like Del
pixelflood is free software: you can redistribute it and/or modify it under the terms of the GNU Affero General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.
pixelflood is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero General Public License for more details.
You should have received a copy of the GNU Affero General Public License along with pixelflood. If not, see http://www.gnu.org/licenses/.