Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/59.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/linux/26.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
将已建立的TCP连接转发到另一个端口上的另一个进程?_C_Linux_Sockets_Debian_System Calls - Fatal编程技术网

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

将已建立的TCP连接转发到另一个端口上的另一个进程?,c,linux,sockets,debian,system-calls,C,Linux,Sockets,Debian,System Calls,在Linux机器上,有一个守护进程侦听TCP端口a。但是,它通常被停止,因为它很少被使用,并且占用了大量的系统资源。相反,我想做这样的事情: 为侦听端口B的应用程序编写代码,并在建立连接后立即执行以下操作:如果守护进程已停止,则启动它并等待它侦听端口a。现在困难的部分是:以完全透明的方式将客户端连接到守护进程,即客户端不必在端口a上重新连接。此外,但这与这个问题无关,应用程序将在一定时间内没有连接时关闭守护进程 当然,我可以让我的应用程序连接到守护进程并通过管道进行所有通信。我不想那样。我想用某

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

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

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

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


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

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


更现代化的实现是

谢谢,这是我能想象到的最好的世界。