gpt4 book ai didi

c++ - 将 C++ 用于网络守护进程有什么缺点吗?

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:58:46 25 4
gpt4 key购买 nike

过去几年我一直在用不同的语言编写许多网络守护进程,现在我要开始一个新项目,它需要一个新的自定义实现专有网络协议(protocol)。

上述协议(protocol)非常简单 - 一些基本的 JSON 格式消息,这些消息在一些基本的帧包装中传输,让客户端知道消息已完全到达并准备好进行解析。

守护进程将需要处理多个连接(同时大约 200 个)并对它们进行一些管理并传递消息,就像在聊天室中一样。

过去我主要使用 C++ 来编写我的守护进程。通常使用 Qt4 框架(网络部分,而不是 GUI 部分!),因为这也是我在其余项目中使用的,而且它简单易行且非常便携。这通常工作得很好,我没有遇到太多麻烦。

作为 Linux 管理员已经有一段时间了,我注意到大多数网络守护进程都是用纯 C 编写的(当然也有一些是用其他语言编写的,但我感觉 > 80%的守护进程是用纯 C 语言编写的)。

现在我想知道为什么会这样。这是由于纯粹的历史 UNIX 背景(如 KISS)还是为了简单的可移植性或减少膨胀? 将 C++ 或任何“高级”语言用于守护进程之类的东西的原因是什么?

提前致谢!


更新 1:

对我来说,使用 C++ 通常更方便,因为我有 对象,它们具有 getter 和 setter 方法等。 Plain C 的“上下文”对象在某些时候可能是一个真正的痛苦 - 特别是当您习惯了面向对象的编程时。

是的,我知道C++ 是C 的超集,而C 代码基本上就是C++ 您可以使用C++ 编译器编译任何C 代码。但这不是重点。 ;)


更新 2:

我知道现在使用高级(脚本)语言(如 Python、node.js 或类似语言)可能更有意义。我过去这样做过,而且我知道这样做的好处(至少我希望我知道 ;)- 但这个问题只是关于 C 和 C++。

最佳答案

我个人想不出有任何技术理由选择 C ​​而不是 C++。无论如何,我无法立即想到一个对位。

编辑回复编辑:我强烈建议您不要考虑“...C 代码基本上是 C++”。尽管从技术上讲,您可以使用 C++ 编译器编译任何 C 程序(只要您不使用 C 中比 C++ 采用的功能更新的任何功能),我真的试图阻止任何人在 C++ 中编写类似 C 的代码或考虑使用 C++作为“带有对象的 C”。

作为对 C 成为 Linux 标准的回应,只有 C 开发人员一直在说:p C++ 与 C 一样成为 Linux 中任何标准的一部分,并且在 Linux 上制作了各种各样的 C++ 程序。如果你正在编写一个 Linux 驱动程序,你需要用 C 来完成它。除此之外......我知道 RMS 喜欢说你更有可能找到 C 编译器而不是 C++ 编译器,但实际上并没有很长一段时间以来都是如此。您会在几乎所有安装中找到两者或两者都没有。

关于可维护性——我当然不同意。

就像我说的,我想不出一个不能立即被反驳的。反之亦然。

关于c++ - 将 C++ 用于网络守护进程有什么缺点吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4704605/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com