Network programming 到inetd还是不到inetd。。。我应该在什么时候为我的网络服务器程序使用inetd?

Network programming 到inetd还是不到inetd。。。我应该在什么时候为我的网络服务器程序使用inetd?,network-programming,inetd,Network Programming,Inetd,任何人都可以给出一组简洁的现实考虑因素,以推动选择是否使用inetd来管理充当网络服务器的程序吗 (如果使用inetd,我认为它会改变程序中关于网络代码的要求,因此我认为它肯定与编程相关,而不是通用的) 这个问题是基于我所看到的一个实现,它使用inetd管理的控制程序启动一个网络侦听器,然后该侦听器将永远运行,并承受恒定的重载。它似乎不太适合教科书中的inetd使用模式(按需、不常使用、轻量级),这让我对更一般的问题产生了兴趣。您正在考虑什么替代策略 inetd是确保服务器在操作系统以适当的运行

任何人都可以给出一组简洁的现实考虑因素,以推动选择是否使用inetd来管理充当网络服务器的程序吗

(如果使用inetd,我认为它会改变程序中关于网络代码的要求,因此我认为它肯定与编程相关,而不是通用的)


这个问题是基于我所看到的一个实现,它使用inetd管理的控制程序启动一个网络侦听器,然后该侦听器将永远运行,并承受恒定的重载。它似乎不太适合教科书中的inetd使用模式(按需、不常使用、轻量级),这让我对更一般的问题产生了兴趣。

您正在考虑什么替代策略


inetd是确保服务器在操作系统以适当的运行级别引导时启动的好方法。即使将服务器设计为具有其他管理机制,inetd仍然可以非常简单地包装所有命令。毕竟这只是shell脚本。

从操作的角度来看,挂接到inetd将使您的服务更易于管理,因为inetd允许系统管理员几乎控制与您的程序进行网络通信的所有方式。但是,它需要您对程序进行一些代码更改。而且,它可能没有一开始就让程序作为守护进程运行那么有效


编辑:我个人从不使用inetd,总是选择将服务器进程作为独立的守护进程来编写。

这取决于您服务的使用模式。如果守护进程的启动时间较短,并且您希望很少使用它,那么inted可能是一个很好的选择。它减少甚至消除了编写任何额外网络代码的需要

如果你的守护进程更重或者使用频率更高,那么你最好单独编写它。您可以很容易地编写一个
init.d
脚本和一些
conf.d
配置来配合它,管理员管理起来也不难。现在大多数编程语言都有易于使用的套接字库,因此在许多情况下,网络代码甚至可能没有那么难


根据我的经验,现在很少有管理员熟悉inetd。大多数守护进程只提供自己的初始化脚本。事实上,在我管理的几百个系统中,我想不出哪一个可以通过inetd启动任何东西。这是值得考虑的。

我认为在决定使用inetd时,另一个值得考虑的因素是处理请求的进程平均消耗多少内存?如果这相当高,那么在高负载下,您可能会耗尽内存(因为inetd分叉)。同一台服务器可能以多线程或选择轮询方式实现,可能允许每个连接具有更高的负载/更少的内存。

好吧-我想,替代策略是直接运行网络程序,从rc.d脚本开始,所以,也许Windows/UNIX兼容性是您选择inetdseeing的原因之一。mcrute的回答只是告诉我,我对inetd知之甚少。然而,我使用/开发的许多应用程序都运行一个守护进程,然后将脚本添加到inetd以启动/停止它们。我想windows中的等效功能是作为服务安装。