我正在开发在C数据库连接的Linux守护++将充当“服务器”对于某些网络控制器设备。它必须具有某种形式的并发才能同时为多个设备提供服务。服务器将侦听每个连接设备的传入连接和fork/thread/select()/无论什么。此连接应保持打开状态,直到它断开或关闭。客户端不会是多线程的,所以它们一次只能有一个连接。模型多线程/叉服务器守护程序
该项目需要一个设备能够联系“服务器”与将被处理,通常包括数据库查询命令,并反过来,发送命令到网络设备中的另一个。数据库查询将确定要与哪个其他客户端通话。然后我必须通过与该线程的现有连接来找到它所连接的进程或线程,并与设备进行通信。在一台设备
认为,一些形式的“授权”的波及另一装置接收命令,做一些事情。我不能只在设备之间发送“点对点”命令,因为所有事情都必须记录在服务器上,并且数据库查询可能是必需的。
我通过线程/进程之间的通信困惑。我预计有一个客户端类(即Device
),并在每个单独的进程或线程中创建一个对象。我知道使用fork()的命名管道共享内存,以及与其他线程通信的技术,但我担心同步和潜在的稳定性问题。在我遇到这个问题之前,我对fork和它的易用性和简单性感到兴奋。稳定性是排名第一的关注点。
我这样做完全错了吗?我的描述并不是很好,所以那些认为你可能会提供帮助的人可能首先会提出问题。也许有人刚刚完成这样的东西...
我对这个问题的长度和相当模糊的性质表示歉意。这更多的是设计问题,而不是直接的,可回答的问题。我不确定它是否属于程序员或者是在这里。如有必要,随意移动。
谢谢大家谁试图救我的理智。
更新:如果我为此使用Boost.Asio,任何人都可以给我一个简短的解释/示例代码或指向正确的方向吗?
链接:http://boostcon.blip.tv/file/4171562/ – 2011-05-05 04:49:49
谢谢!看起来很有希望。 – Smurf64 2011-05-05 20:40:05