目标:让进程 A 通过 TCP 向进程 B 发送消息,反之亦然(我使用 ROSBridge)。
问题:每次只有一个进程可以使用一个端口
解决方案(?):让进程 A 使用端口 9090 但将流量转发到 9091,让进程 B 使用端口 9091 但将流量转发到端口 9090。
问题是:这个解决方案有效吗?还是我会得到一个重复数据的无限循环?有什么办法可以避免这种情况?如果这个方法有效,我该如何设置?如果这个方法无效,我还能做什么?
答案1
听起来我对端口的理解不够。ROSBridge 的主机设置为使用端口 9090,因此任何希望连接到它的人都会请求主机的端口 9090 进行连接,但仍会在其自身端使用它想要的任何端口。在这两个应用程序中,我可以声明“主机”端口是 9090,而不会发生冲突,因为客户端应用程序仍会打开一个随机的其他端口供自己使用,以连接到主机端口。因此,我遇到的问题不是“端口共享”,因为这不是正在发生的事情。只有一个在 9090 上托管。