C使用zeromq完成有意義的通訊小白使用開源共用庫 (C使用zeromq)

來源:互聯網
上載者:User

本文嘗試使用zeromq完成一項簡單的網路傳送任務。

(小白使用開源共用庫 (C使用zeromq) 該篇已經完成了一個簡單的可啟動並執行基本程式,本篇基於此改造而來)

main.c修改後的內容如下:

#include "zhelpers.h"int main (void){    void *context = zmq_init (1);   //  Socket to talk to clients    void *responder = zmq_socket (context, ZMQ_REP);    zmq_bind(responder, "tcp://*:5559");    while (1) {        //  Wait for next request from client        char *string = s_recv (responder);        printf ("Received request: [%s]\n", string);        free (string);        //  Do some 'work'        sleep (1);        //  Send reply back to client        s_send (responder, "World");    }    //  We never get here but clean up anyhow    zmq_close(responder);    zmq_term(context);    return 0;}

當然我們還需要一個client.c來充當用戶端,main.c同級目錄下建立client.c。相同的道理,把client的編譯資訊也加進Makefile

////  Hello World client//  Connects REQ socket to tcp://localhost:5559//  Sends "Hello" to server, expects "World" back//#include "zhelpers.h"int main (void){    void *context = zmq_init (1);    //  Socket to talk to server    void *requester = zmq_socket (context, ZMQ_REQ);    zmq_connect (requester, "tcp://localhost:5559");    int request_nbr;    for (request_nbr = 0; request_nbr != 10; request_nbr++) {        s_send (requester, "Hello");        char *string = s_recv (requester);        printf ("Received reply %d [%s]\n", request_nbr, string);        free (string);    }    zmq_close (requester);    zmq_term (context);    return 0;}

這是zeromq官網上找到的代碼,原來可能有點小小的問題,經過稍加改造可以順利運行。原文在這裡 

https://github.com/imatix/zguide/blob/master/examples/C/rrserver.c

https://github.com/imatix/zguide/blob/master/examples/C/rrclient.c

注意程式中用到了一個zhelpers.h標頭檔,那個檔案在官網上也是有的。有需要的話,不妨自己找找看 ^_^。

紋絲不動拷貝到include 中,回到app一個make搞定。

啟動兩個putty,一個跑main另一個跑client可以看到效果如下。

總結一下吧

1 短短的幾行代碼就能完成基本的socket通訊,zmq的強大已經有所體現。

2 開源真是個好東西,快樂源於分享。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.