首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 软件管理 > 软件架构设计 >

ZeroMQ指南-第1章-基础(二)

2013-02-19 
ZeroMQ指南-第1章-基础(2)提出假定我们假定你使用的至少是3.2发行版?MQ。我们假定你在使用Linux box或类的

ZeroMQ指南-第1章-基础(2)
提出假定

我们假定你使用的至少是3.2发行版?MQ。我们假定你在使用Linux box或类似的东西。我们假定你能读C代码,这是几乎全部示例的默认语言。我们假定当我们写下常量PUSH或SUBSCRIBE时你能够想象到它们实际名称是ZMQ_PUSH或ZMQ_SUBSCRIBE,当编程语言需要时。

获取示例

示例代码位于一个公共GitHub版本库中。获取全部示例的最简单方法是克隆这个版本库:


请求-应答套接字是一前一后紧密相连的。客户端先发出zmq_msg_send()然后是zmq_msg_recv(),依次循环(或单次如果必要)。其它任何顺序(例如一行发送两个消息)都将导致send或recv调用返回-1代码。同样的,服务端依次先发出zmq_msg_recv()然后是zmq_msg_send(),频率则因其所需。

?MQ使用C作为参考语言,同时也是我们在示例中使用的主要语言。如果你在线浏览,示例下方的链接可带你到其它编程语言版本。让我们比较一下服务器代码的C++版本。

如果在C程序中读取,你得到的会是一个看起来像是字符串,或许还意外的用起来也是一个字符串(如果碰巧这五个字符发现它们后面跟着一个无辜潜伏着的null),但却不正常的字符串。当客户端和服务器对字符串格式不能取得一致意见时,你会得到怪异的结果。

在C语言中,当你从?MQ接收到字符串数据时,你无法信任它是安全结尾的。每次读取字符串你都需要分配一个新的多带一个字节的缓冲,复制这个字符串,然后用一个null正确结尾。

那么让我们协定个规则:?MQ字符串是指定长度的,发送时不带结尾的null。在最简单的情况下(示例中我们会这么做)一个?MQ字符串简洁的映射到一个?MQ消息帧,如上图,一个长度和一些字符。

用C语言,这里我们需要做的是接收一个?MQ字符串然后以合法的C字符串发送给程序。

//// Report 0MQ version//#include "zhelpers.h"int main (void){    int major, minor, patch;    zmq_version (&major, &minor, &patch);    printf ("Current 0MQ version is %d.%d.%d\n", major, minor, patch);    return EXIT_SUCCESS;}


热点排行