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


Linux机器上,您有一个侦听TCP端口A的守护程序.但是,它通常会被停止,因为它很少使用并占用大量系统资源.相反,我想做这样的事情:

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

当然,我可以让我的应用程序连接到守护进程并管道所有通信.我不要那个.我想要一些方法将已建立的连接转发到守护进程,然后摆脱连接的套接字,而客户端现在很高兴与守护进程连接.在某种程度上,我想给守护进程的进程我已连接的套接字.有没有办法做这样的事情?

我正在运行Debian,如果这很重要的话.我想用C/C++编写应用程序代码,并且可以使用特定于操作系统的解决方案(即使用系统调用).请原谅我,我不是一个Linux编码器,所以我对Linux系统编程不是很熟悉.如果有一些明显的方法可以做到,我根本就不知道.

当然,我对任何建议持开放态度.

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

更现代的实施是xinetd

点赞