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').

ok - but how can i make use of it?

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)


geisler@primusnetz.de