在C中使用单个消息队列是否可以进行双向通信

时间:2014-03-26 12:29:07

标签: c linux ipc message-queue

我希望服务器向客户端和客户端发送一些消息来确认它。我得到了这个任务。我可以在C linux中使用单个消息队列来完成它,或者我需要创建两个??

谢谢:)

2 个答案:

答案 0 :(得分:2)

是的,可以使用sysV消息队列执行此操作,从您查看之前的问题开始,您正在使用这些队列。您可以使用消息格式中嵌入的msgtype字段来指定它是什么类型的消息,并且相应的接收过程必须在其msgrcv调用中指定msgtype并处理该类型的消息。

因此,例如,服务器可以写入msgtype = 1,客户端可以写入msgtype 2.

请注意,这需要您真正考虑您的消息传递方案 - 仔细阅读msgrcv文档,以便了解如何读取消息的选项 - 以及您为什么这样做。如果你做得不对,它就不能很好地扩展 - 不是在性能上,而是在编程的复杂性 - 并且很容易让你自己处于你的程序正在追逐自己的尾巴的情况下。

这是否比只使用两个队列更聪明我将留给你决定。

请注意,您实际上无法使用POSIX消息队列执行此操作。

答案 1 :(得分:0)

不,您必须使用两个消息队列