三、实践
1.helloworld(码农的无敌测试程序)
测试环境说明:
1) 客户端:ZeroMQ for PHP
2) 服务端:ZeroMQ for C
客户端代码:zmq-client.php
版权说明:此代码是ZMQ官网测试代码,可能做了一点修改;
运行说明:此处默认您已经为php安装了zmq插件,详细情况请参考上一篇博客《环境搭建》;
<?php /* * zmq-client.php * * Hello World client * Connects REQ socket to tcp://localhost:5555 * Sends "XXX" to C server, expects "YYY" back * @author Ian Barber <ian(dot)barber(at)gmail(dot)com> */ $context = new ZMQContext(); // Socket to talk to server echo "<br>Connecting to hello world server…\n"; $requester = new ZMQSocket($context, ZMQ::SOCKET_REQ); $requester->connect("tcp://localhost:5555"); for ($request_nbr = 0; $request_nbr != 10; $request_nbr++) { printf ("<br>Sending request %d…\n", $request_nbr); $requester->send("Hello from php client!"); $reply = $requester->recv(); printf ("<br>Received reply %d: [%s]\n", $request_nbr, $reply); } ?>
客户端代码:hello_world_server.c
版权说明:此代码是ZMQ官网测试代码,可能做了一点修改;
编译说明:需要链接czmq库,此处默认您已经安装了zmq库和czmq库;
// hello_world_server.c // Hello World server #include <zmq.h> #include <stdio.h> #include <unistd.h> #include <string.h> #include <assert.h> #define BUFFER_LEN 64 int main (void) { // Socket to talk to clients void *context = zmq_ctx_new (); void *responder = zmq_socket (context, ZMQ_REP); int rc = zmq_bind (responder, "tcp://*:5555"); assert (rc == 0); while (1) { char buffer [BUFFER_LEN]; zmq_recv (responder, buffer, BUFFER_LEN, 0); printf ("Received:[%s]\n", buffer); zmq_send (responder, "World from c server", strlen("World from c server"), 0); sleep (1); // Do some 'work' } return 0; }
测试结果(客户端):
测试结果(服务端):
helloworld示例到此演示完毕,下一篇博客将演示ZMQ的MDP模式:php-client、c-broker和c-server。