生成子进程并通过套接字连接的正确方法

时间:2011-11-21 08:58:26

标签: c++ sockets architecture client-server ipc

我正在维护一个由Java GUI和C ++引擎组成的相当大的应用程序。这两个组件目前紧密耦合 - UI将引擎加载为库,并使用JNI传递消息对象。我正在考虑将引擎作为自己的进程分解,这将为任何应用程序通过套接字连接API(对于1个服务器总是只有1个客户端)。

在正常情况下,启动应用程序将包括:

  1. GUI找到未使用的端口XXXX,使用端口XXXX生成Engine子进程作为参数
  2. 引擎在端口XXXX上打开侦听套接字
  3. GUI连接到端口XXXX
  4. GUI-Engine通过一些任意编号的端口连接,可以关闭XXXX服务器套接字。
  5. 但是有些事情感觉不对 - 有一种竞争条件,即同时启动的两个应用程序可以选择相同的未使用端口(在生成其子进程之前)。我可以解决这个问题,但这让我想知道我是否对这种关系有一些基本的误解和/或应该如何建立连接?

    谢谢!

0 个答案:

没有答案