In recent years, I have written several network daemons in different languages, and now I am going to launch a new project that requires a new user implementation of the proper network protocol.
The specified protocol is quite simple - some basic messages in JSON format, which are transmitted in some basic Frey packaging, so that clients know that the message is received completely and is ready for analysis.
The daemon will have to process several connections (about 200 at the same time), as well as manage them and send messages together, as in a chat room.
In the past, I used mostly C ++ to write my demons. Often with a Qt4 card (parts of the network, not parts of the GUI!), Because this is what I also used for other projects, and it was easy to do and very portable. This is usually normal, and I had no particular problems.
As a Linux administrator now, I noticed that most network daemons in the wild are written in simple C (of course, some of them are written in other languages, but I feel that> 80% of daemons are written in simple C).
Now I wonder why this is so. Is this due to a clean UNIX historical background (e.g. KISS) or simple portability or less bloat? What are the reasons not to use C ++ or any higher level languages for things like daemons?
Thanks in advance!
Update 1:
For me, using C ++ is usually more convenient due to the fact that I have objects that have getter and setter methods, etc. Objects in a regular context "context" can be a real pain at some point, especially when you are used to object-oriented programming.
Yes i know that C ++ is a superset of C, and this C code is basically C ++ You can compile any C code using the C ++ compiler. But this is not the main thing .;)
Update 2:
I know that at present it might make sense to use a high-level language (scripting) such as Python, node.js or similar. I have done this in the past, and I am aware of the benefits of this (at least I hope so do I); but this question only applies to C and C ++.