我现在正在使用套接字在各种进程之间进行通信。一切都在同一台机器上运行,所以没有数据包丢失,我也没有读取超时等。消息通常是小数据块(JSON,有时是二进制)。现在我想做跨机器通信。客户端/服务器连接通常如下所示:客户端告诉服务器开始一些处理(传递任务描述),服务器完成工作并回传进度,客户端可以选择在中间发送终止消息。完成后,服务器将在客户端完全断开连接时保持监听(即会话结束,启动新任务将启动新会话。)
我应该如何实施沟通?我可以轻松地继续在网络上使用套接字,但我的理解是,我现在需要添加大量的错误处理来识别消息何时无法通过并以某种方式将其传达回服务器。我想要的只是send(message, target)
并且放心,完整的信息会被传输;当对方死了时加上一些通知。我已经看到有一些像zero-mq这样的库声称可以做到这一点,但也有更多,我不确定这样的消息库是否真的是必要的。是否有一些易于使用的库可以进行基本的沟通?
我正在使用C ++& Python和BSD样式许可证绝对是库的首选。图书馆也应该相当稳定,因为沟通部分并不是真正重要的,我希望能够坚持使用一种解决方案。
答案 0 :(得分:2)
TCP保证所有的pagack都被传递到目的地[如果没有,它会为你重新发送]。所以,如果你使用它 - 它可能需要更多的时间[与单机相比],但msg传输的正确性仍然存在。
答案 1 :(得分:2)
你应该看看ZeroMQ。它具有比纯BSD套接字更简单的接口,更便于携带,并且具有优秀的文档。
答案 2 :(得分:0)
结帐networkComms.net以获取开源网络通信库。
答案 3 :(得分:0)
听起来你需要一个消息队列。
有很多很多解决方案,其中只有一个是redis:http://redis.io