multithreaded TCP feedback server
This is the homepage of the multithreaded tcp feedback server
What is this mult...(what?)?
Short description:
The tcp-server runs on port 1200 TCP. When he catches a connection, the connection will be passed to the next available thread (MAXTHREADS allowed -> change in config.h, if needed). If the thread gets input from the connected client (only MAXBUFFERSIZE allowed -> change in config.h, if needed), the data will be written to the - so called - feedback-buffer. This buffer is synchronized in all threads - so no one can change data, while another is also writing. After the client-data has been stored to the feedback-buffer, all of the feedback-buffer is passed back to the client (That is also the reason for the name 'feeback-buffer').
The whole server is experimental and should not be used in any productivity enviroment. Use it at your own risk. You can use it - as example - for a client-server-test-enviroment, where you want to have some kind of client-status-data available in all clients. Or probably a game-server (don't know if it works).
What do I need to run feedback-server?You need a Unix-System, gnu-C-compiler, and pthreads library
What is the latest version?The latest version is 0.2
Where are the sources?It is available from http://home.primusnetz.de/mgeisler/feedback-server/feedback-tcp-server-0.2.tgz.
Warning:
This code has not been tested. You may crash your system!. I will not take any responsibilty.
Stop bothering me! I want to see screenshots!Yes. Of course. Screenshots of a daemon.
Here you go:
tail -f /var/log/messages Feb 23 20:15:30 rechner feedbackserver: feedbackbuffer has been initialized! Feb 23 20:15:30 rechner feedbackserver: [mother] threads running: 0, threads notrunning: 5 Feb 23 20:15:30 rechner feedbackserver: [mother] waiting for data on port TCP 1200 Feb 23 20:15:33 rechner feedbackserver: [mother] connected to client '192.168.0.154'! Feb 23 20:15:33 rechner feedbackserver: [child] starting new server thread Feb 23 20:15:33 rechner feedbackserver: [mother] threads running: 1, threads notrunning: 4 Feb 23 20:15:33 rechner feedbackserver: [mother] waiting for data on port TCP 1200 Feb 23 20:15:33 rechner feedbackserver: [mother] checking thread matrix (1 running, 4 notrunning) Feb 23 20:15:33 rechner feedbackserver: [mother] child 0: Status: 1, Pointer: 135035096, ID: 2051, Client: 192.168.0.154 Feb 23 20:15:33 rechner feedbackserver: [mother] child 1: Status: 0, Pointer: 0, ID: 0, Client: (null) Feb 23 20:15:33 rechner feedbackserver: [mother] child 2: Status: 0, Pointer: 0, ID: 0, Client: (null) Feb 23 20:15:33 rechner feedbackserver: [mother] child 3: Status: 0, Pointer: 0, ID: 0, Client: (null) Feb 23 20:15:33 rechner feedbackserver: [mother] child 4: Status: 0, Pointer: 0, ID: 0, Client: (null) Feb 23 20:15:35 rechner feedbackserver: [child 0] received message from peer: (size: 7),hallo^M Feb 23 20:15:35 rechner feedbackserver: [child 0] client send END-Tag! Feb 23 20:15:35 rechner feedbackserver: [child 0] writing input buffer to feedback buffer: hallo^M Feb 23 20:15:35 rechner feedbackserver: [mother] checking thread matrix (1 running, 4 notrunning) Feb 23 20:15:35 rechner feedbackserver: [mother] child 0: Status: 1, Pointer: 135035096, ID: 2051, Client: 192.168.0.154 Feb 23 20:15:35 rechner feedbackserver: [mother] child 1: Status: 0, Pointer: 0, ID: 0, Client: (null) Feb 23 20:15:35 rechner feedbackserver: [mother] child 2: Status: 0, Pointer: 0, ID: 0, Client: (null) Feb 23 20:15:35 rechner feedbackserver: [mother] child 3: Status: 0, Pointer: 0, ID: 0, Client: (null) Feb 23 20:15:35 rechner feedbackserver: [mother] child 4: Status: 0, Pointer: 0, ID: 0, Client: (null) Feb 23 20:15:38 rechner feedbackserver: [mother] connected to client '192.168.0.2'! Feb 23 20:15:38 rechner feedbackserver: [child] starting new server thread Feb 23 20:15:38 rechner feedbackserver: [mother] threads running: 2, threads notrunning: 3 Feb 23 20:15:38 rechner feedbackserver: [mother] waiting for data on port TCP 1200 Feb 23 20:15:38 rechner feedbackserver: [mother] checking thread matrix (2 running, 3 notrunning) Feb 23 20:15:38 rechner feedbackserver: [mother] child 0: Status: 1, Pointer: 135035096, ID: 2051, Client: 192.168.0.154 Feb 23 20:15:38 rechner feedbackserver: [mother] child 1: Status: 1, Pointer: 135035152, ID: 3076, Client: 192.168.0.2 Feb 23 20:15:38 rechner feedbackserver: [mother] child 2: Status: 0, Pointer: 0, ID: 0, Client: (null) Feb 23 20:15:38 rechner feedbackserver: [mother] child 3: Status: 0, Pointer: 0, ID: 0, Client: (null) Feb 23 20:15:38 rechner feedbackserver: [mother] child 4: Status: 0, Pointer: 0, ID: 0, Client: (null) Feb 23 20:15:39 rechner feedbackserver: [child 1] received message from peer: (size: 6),asdf^M Feb 23 20:15:39 rechner feedbackserver: [child 1] client send END-Tag! Feb 23 20:15:39 rechner feedbackserver: [child 1] writing input buffer to feedback buffer: asdf^M Feb 23 20:15:39 rechner feedbackserver: [child 1] received message from peer: (size: 6),asdf^M Feb 23 20:15:39 rechner feedbackserver: [child 1] client send END-Tag! Feb 23 20:15:39 rechner feedbackserver: [child 1] writing input buffer to feedback buffer: asdf^M Feb 23 20:15:40 rechner feedbackserver: [child 1] received message from peer: (size: 6),asdf^M Feb 23 20:15:40 rechner feedbackserver: [child 1] client send END-Tag! Feb 23 20:15:40 rechner feedbackserver: [child 1] writing input buffer to feedback buffer: asdf^M Feb 23 20:15:40 rechner feedbackserver: [mother] checking thread matrix (2 running, 3 notrunning) Feb 23 20:15:40 rechner feedbackserver: [mother] child 0: Status: 1, Pointer: 135035096, ID: 2051, Client: 192.168.0.154 Feb 23 20:15:40 rechner feedbackserver: [mother] child 1: Status: 1, Pointer: 135035152, ID: 3076, Client: 192.168.0.2 Feb 23 20:15:40 rechner feedbackserver: [mother] child 2: Status: 0, Pointer: 0, ID: 0, Client: (null) Feb 23 20:15:40 rechner feedbackserver: [mother] child 3: Status: 0, Pointer: 0, ID: 0, Client: (null) Feb 23 20:15:40 rechner feedbackserver: [mother] child 4: Status: 0, Pointer: 0, ID: 0, Client: (null) Feb 23 20:15:41 rechner feedbackserver: [child 1] received message from peer: (size: 6),quit^M Feb 23 20:15:41 rechner feedbackserver: [child 1] client disconnected with quit Feb 23 20:15:43 rechner feedbackserver: [child 0] received message from peer: (size: 6),quit^M Feb 23 20:15:43 rechner feedbackserver: [child 0] client disconnected with quit Feb 23 20:15:45 rechner feedbackserver: [mother] checking thread matrix (2 running, 3 notrunning) Feb 23 20:15:45 rechner feedbackserver: [mother] deleting thread 2051. Reason: no longer running. Feb 23 20:15:45 rechner feedbackserver: [child 0] destroying server thread Feb 23 20:15:45 rechner feedbackserver: [mother] child 0: Status: 0, Pointer: 0, ID: 0, Client: (null) Feb 23 20:15:45 rechner feedbackserver: [mother] deleting thread 3076. Reason: no longer running. Feb 23 20:15:45 rechner feedbackserver: [child 1] destroying server thread Feb 23 20:15:45 rechner feedbackserver: [mother] child 1: Status: 0, Pointer: 0, ID: 0, Client: (null) Feb 23 20:15:45 rechner feedbackserver: [mother] child 2: Status: 0, Pointer: 0, ID: 0, Client: (null) Feb 23 20:15:45 rechner feedbackserver: [mother] child 3: Status: 0, Pointer: 0, ID: 0, Client: (null) Feb 23 20:15:45 rechner feedbackserver: [mother] child 4: Status: 0, Pointer: 0, ID: 0, Client: (null)