c-将已建立的TCP连接转发到另一个端口上的另一个进程



在Linux机器上,您有一个在TCP端口a上侦听的守护进程。然而,它通常会被停止,因为它很少被使用,并且占用了大量的系统资源。相反,我想做这样的事情:

编写一个在端口B上侦听并在建立连接后立即执行以下操作的应用程序:如果守护程序已停止,请启动它并等待,直到它在端口a侦听为止。现在困难的部分是:以完全透明的方式将客户端连接到守护进程,即客户端不必在端口a上重新连接。此外,但这与这个问题无关,当在一定时间内没有连接时,应用程序将关闭守护进程。

当然,我可以让我的应用程序连接到守护进程并通过管道进行所有通信。我不想那样。我想用某种方法将已建立的连接转发到守护进程,然后去掉已连接的套接字,而客户端现在可以很高兴地与守护进程连接。在某种程度上,我想给守护进程我的已经连接的套接字。有什么办法做这样的事吗?

我在管理Debian,如果这很重要的话。我想用C/C++编写应用程序,并且可以使用特定于操作系统的解决方案(即使用系统调用)。不过请原谅我,我不是一个Linux程序员,所以我对Linux系统编程不是很熟悉。如果有什么明显的方法可以做到这一点,我只是不知道。

当然,我愿意接受任何建议。

这个问题有一个预先存在的标准解决方案,通常称为inetd。它已经存在了很长一段时间,首先是在Unix系统中,然后是在Linux中。

更现代的实现是xinetd

相关内容

最新更新