C ++应用程序:是否可以将接受的TCP连接从一个进程传递到另一个进程?

时间:2011-03-15 13:54:10

标签: c++ tcp connection interprocess

所以我想知道 - 是否可以将接受的TCP连接(在Windows或Unix上,如OS)从一个进程传递到另一个进程?这里的重点是通过连接 - 而不是代理应用程序的数据。

2 个答案:

答案 0 :(得分:8)

在Unix中,TCP连接表示为套接字文件描述符。当您fork进程时,子进程会继承文件描述符,包括TCP套接字。 (如果exec标记为fcntl,则可能会在FD_CLOEXEC上关闭。)

还可以使用本地(Unix)域套接字在不相关的进程之间传输文件描述符;见this question

我不确定Windows。

答案 1 :(得分:5)

在Windows上,使用WSADuplicateSocket,将填好的WSAPROTOCOL_INFO传递给其他进程,使用WSPSocket重新创建套接字。

在类似unix的OS上,可以使用sendmsg()系统调用。 libancillary为您摘录此内容。