zeromq安装手册

        1.下载

  posix版:http://download.zeromq.org/zeromq-2.1.7.tar.gz

  win版:http://download.zeromq.org/zeromq-2.1.7.zip

  2.安装

  tar -zxvf zeromq-2.1.7.tar.gz

  cd zeromq-2.1.7

  ls

  ./configure --prefix=/data/zeromq

  make

  make install

  3.测试

  服务端测试代码,服务端服务器上的zmq是按照默认目录安装,因此和下面的client.c的编译不一样:

  /*gcc server.c -o server -lzmq

  ./server

  接收客户消息,并回复随机数字

  */ #include <zmq.h>

  #include <stdio.h>

  #include <unistd.h>

  #include <string.h>

  #include <stdlib.h>

  int main (void)

  {

  void *context = zmq_init (1);

  // Socket to talk to clients

  void *responder = zmq_socket (context, ZMQ_REP);

  //监听5555端口

  zmq_bind (responder, "tcp://*:5555");

  printf("binding on port 5555.\nwaiting client send message...\n");

  while (1) {

  // Wait for next request from client

  zmq_msg_t request;

  zmq_msg_init (&request);

  //接收客户端消息

  zmq_recv (responder, &request, 0);

  int size = zmq_msg_size (&request);

  //打印客户端消息

  char *string = malloc (size + 1);

  memset(string,0,size+1);

  memcpy (string, zmq_msg_data (&request), size);

  printf ("Received Hello string=[%s]\n",string);

  free(string);

  zmq_msg_close (&request);

  // Do some 'work'

  sleep (1);

  // Send reply back to client

  zmq_msg_t reply;

  char res[128]={0};

  //回复客户端

  snprintf(res,127,"reply:%d",random());

  zmq_msg_init_size (&reply, strlen(res));

  memcpy (zmq_msg_data (&reply), res, strlen(res));

  //发送

  zmq_send (responder, &reply, 0);

  zmq_msg_close (&reply);

  }

  // We never get here but if we did, this would be how we end

  zmq_close (responder);

  zmq_term (context);

  return 0;

  }

  客户端代码,若是server和客户端端不是同一台机器,需要把localhost改为server的ip:

  /* gcc client.c -o client -lzmq -L/data/zeromq/lib -I/data/zeromq/include

  ./client "I am jack"

  向服务器发送消息,并打印回复消息  */ #include <zmq.h>

  #include <string.h>

  #include <stdio.h>

  #include <unistd.h>

  #include <stdlib.h>

  int main (int argc,char**argv)

  {

  //参数1为要发送的消息

  if(argc < 2){

  printf("need send msg\n");

  return 1;

  }

  void *context = zmq_init (1);

  // Socket to talk to server

  printf ("Connecting to hello world server...\n");

  //连接server

  void *requester = zmq_socket (context, ZMQ_REQ);

  zmq_connect (requester, "tcp://localhost:5555");

  int request_nbr=0;

  for (request_nbr = 0; request_nbr != 10; request_nbr++) {

  //构建发送消息

  zmq_msg_t request={0};

  //申请消息的空间

  zmq_msg_init_size (&request, strlen(argv[1]));

  //填充消息

  memcpy (zmq_msg_data (&request), argv[1], strlen(argv[1]));

  printf ("Sending Hello %d\n", request_nbr);

  //发送消息

  zmq_send (requester, &request, 0);

  zmq_msg_close (&request);

  //准备接收回复

  zmq_msg_t reply={0};

  zmq_msg_init (&reply);

  //接收回复

  zmq_recv (requester, &reply, 0);

  //读取回复消息

  int size = zmq_msg_size (&reply);

  char *string = malloc (size + 1);

  memset(string,0,size+1);

  memcpy (string, zmq_msg_data (&reply), size);

  printf ("recv from server string=[%s]\n",string);

  free(string);

  zmq_msg_close (&reply);

  }

  zmq_close (requester);

  zmq_term (context);

  return 0;

  }

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
ZeroMQ—指导 由iMatix公司的首席执行官Pieter Hintjens 编写。感谢Bill Desmarais, Brian Dorsey, CAF, Daniel Lin, Eric Desgranges, Gonzalo Diethelm, Guido Goldstein, Hunter Ford, Kamil Shakirov, Martin Sustrik, Mike Castleman, Naveen Chawla, Nicola Peduzzi, Oliver Smith, Olivier Chamoux, Peter Alexander, Pierre Rouleau, Randy Dryburgh, John Unwin, Alex Thomas, rofl0r, Mihail Minkov, Jeremy Avnet, Michael Compton, and Zed Shaw的贡献,也感谢Stathis Sideris,因为Ditaa.。 请对所有的意见和勘误表进行问题跟踪。这个版本覆盖了0MQ2.0的版本,发表于周二2010年11月9日,9时32分19秒。 第一章——基础的东西 修理(fixing)这个世界 怎么解释0MQ?有些人会说它的所有美好的事情。它是类固醇(steroids)上的套接字。它像有路由的邮箱。它很快。别人想分享它的启蒙,当这一切变得越来越明显,人们开始顿悟了。事情变得更简单。再也不复杂了。它打开了人们的思维。其他人喜欢通过做比较的方式来解释。它更小,更简单,但是看起来仍然很熟悉。就我个人而言,我希望回忆起我们为什么要开发0MQ,因为,这是读者们也很想知道的问题。 编程是装扮成艺术的科学,因为我们中的大多数不了解软件的物理过程。如果学过这方面的知识的话,也学的很少。软件的物理过程不是算法,数据结构,语言和抽象。这些只是我们研发,使用,然后扔掉的工具。软件真正的物理过程实际上是人们的思维过程。 ……
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值