【linux + lighttpd + php + zeromq】之实战训练一

来源:互联网 发布:淘宝正义哥卖假货么 编辑:程序博客网 时间:2024/05/21 14:01

微笑三、实践

    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 serverecho "<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 64int 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。