gpt4 book ai didi

c++ - 将套接字路由到另一个端口

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:51:46 24 4
gpt4 key购买 nike

我有一个系统,我想监听一个套接字并等待客户端连接,然后将连接传递给另一个应用程序,我将在连接建立后立即启动该应用程序。

我无法控制这个其他应用程序,只能设置它将监听的端口,但我想为每个新客户端设置一个进程。

这就是我想要做的:

routing

我一直在寻找解决方案,但我想我没有正确的术语,但我设法在 Richard Stevens 的“Unix 网络编程”中找到了一些关于 AF_ROUTE 系列的内容可以与 SOCK_RAW 组合以将连接路由到另一个 IP 和端口的套接字。但是关于 how to use this flag 的文档太少了并且似乎需要 super 用户权限(我想避免)。

也许有更简单的解决方案,但我可能使用了错误的术语。清楚我想做什么吗?

最佳答案

我不认为你可以像你想的那样“传递”套接字,特别是如果你不能改变和重新编译“APP”。套接字包括链接到它们所拥有的进程的各种管理开销(资源管理等)。此外,如果您不能重新编译 APP,就没有办法让它绕过接受连接所涉及的步骤,并且简单地将一个已经打开的连接“交给”您的路由器。

但是,您是否考虑过简单地使用路由器作为传递?基本上,让您的“路由器”进程通过套接字连接到它生成的每个“应用程序”进程,并简单地将它从适当的客户端接收到的任何内容回显到适当的应用程序,反之亦然,应用程序到客户端?

这确实会增加开销,您将不得不管理一个小的映射来跟踪哪些客户端访问哪些应用程序,但它可能会起作用(假设应用程序或客户端没有根据他们的 IP 地址做出任何行为)连接到等)。假设你不能重新编译APP,可能没有太多其他选择。

这方面的代码相对简单。您从 APP 接收到的数据的处理程序只是从您的映射中查找相应应用程序的套接字,然后在其上进行非阻塞的数据发送。同样,处理从客户端接收到的数据。根据客户端和应用程序的具体行为,您可能需要处理一些同步(如果您同时从两者接收)。

关于c++ - 将套接字路由到另一个端口,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13019156/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com