您当前的位置:首页 > IT编程 > C++
| C语言 | Java | VB | VC | python | Android | TensorFlow | C++ | oracle | 学术与代码 | cnn卷积神经网络 | gnn | 图像修复 | Keras | 数据集 | Neo4j | 自然语言处理 | 深度学习 | 医学CAD | 医学影像 | 超参数 | pointnet | pytorch | 异常检测 | Transformers | 情感分类 | 知识图谱 |

自学教程:C++ zmq_ctx_term函数代码示例

51自学网 2021-06-03 12:00:57
  C++
这篇教程C++ zmq_ctx_term函数代码示例写得很实用,希望能帮到您。

本文整理汇总了C++中zmq_ctx_term函数的典型用法代码示例。如果您正苦于以下问题:C++ zmq_ctx_term函数的具体用法?C++ zmq_ctx_term怎么用?C++ zmq_ctx_term使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。

在下文中一共展示了zmq_ctx_term函数的30个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于我们的系统推荐出更棒的C++代码示例。

示例1: main

int main (void){    setup_test_environment();    void *ctx = zmq_ctx_new ();    assert (ctx);    //  Spawn ZAP handler    void *zap_thread = zmq_threadstart (&zap_handler, ctx);    //  Server socket will accept connections    void *server = zmq_socket (ctx, ZMQ_DEALER);    assert (server);    int rc = zmq_setsockopt (server, ZMQ_IDENTITY, "IDENT", 6);    assert (rc == 0);    int as_server = 1;    rc = zmq_setsockopt (server, ZMQ_PLAIN_SERVER, &as_server, sizeof (int));    assert (rc == 0);    rc = zmq_bind (server, "tcp://127.0.0.1:9998");    assert (rc == 0);    char username [256];    char password [256];    //  Check PLAIN security with correct username/password    void *client = zmq_socket (ctx, ZMQ_DEALER);    assert (client);    strcpy (username, "admin");    rc = zmq_setsockopt (client, ZMQ_PLAIN_USERNAME, username, strlen (username));    assert (rc == 0);    strcpy (password, "password");    rc = zmq_setsockopt (client, ZMQ_PLAIN_PASSWORD, password, strlen (password));    assert (rc == 0);    rc = zmq_connect (client, "tcp://localhost:9998");    assert (rc == 0);    bounce (server, client);    rc = zmq_close (client);    assert (rc == 0);    //  Check PLAIN security with badly configured client (as_server)    //  This will be caught by the plain_server class, not passed to ZAP    client = zmq_socket (ctx, ZMQ_DEALER);    assert (client);    as_server = 1;    rc = zmq_setsockopt (client, ZMQ_PLAIN_SERVER, &as_server, sizeof (int));    assert (rc == 0);    rc = zmq_connect (client, "tcp://localhost:9998");    assert (rc == 0);    expect_bounce_fail (server, client);    close_zero_linger (client);    //  Check PLAIN security -- failed authentication    client = zmq_socket (ctx, ZMQ_DEALER);    assert (client);    strcpy (username, "wronguser");    strcpy (password, "wrongpass");    rc = zmq_setsockopt (client, ZMQ_PLAIN_USERNAME, username, strlen (username));    assert (rc == 0);    rc = zmq_setsockopt (client, ZMQ_PLAIN_PASSWORD, password, strlen (password));    assert (rc == 0);    rc = zmq_connect (client, "tcp://localhost:9998");    assert (rc == 0);    expect_bounce_fail (server, client);    close_zero_linger (client);    //  Shutdown    rc = zmq_close (server);    assert (rc == 0);    rc = zmq_ctx_term (ctx);    assert (rc == 0);    //  Wait until ZAP handler terminates    zmq_threadclose (zap_thread);    return 0;}
开发者ID:AimuTran,项目名称:avbot,代码行数:75,


示例2: main

//.........这里部分代码省略.........    bounce (server, client);    rc = zmq_close (client);    assert (rc == 0);    //  Check CURVE security with a garbage server key    //  This will be caught by the curve_server class, not passed to ZAP    char garbage_key [] = "0000111122223333444455556666777788889999";    client = zmq_socket (ctx, ZMQ_DEALER);    assert (client);    rc = zmq_setsockopt (client, ZMQ_CURVE_SERVERKEY, garbage_key, 41);    assert (rc == 0);    rc = zmq_setsockopt (client, ZMQ_CURVE_PUBLICKEY, client_public, 41);    assert (rc == 0);    rc = zmq_setsockopt (client, ZMQ_CURVE_SECRETKEY, client_secret, 41);    assert (rc == 0);    rc = zmq_connect (client, "tcp://localhost:9998");    assert (rc == 0);    expect_bounce_fail (server, client);    close_zero_linger (client);    //  Check CURVE security with a garbage client public key    //  This will be caught by the curve_server class, not passed to ZAP    client = zmq_socket (ctx, ZMQ_DEALER);    assert (client);    rc = zmq_setsockopt (client, ZMQ_CURVE_SERVERKEY, server_public, 41);    assert (rc == 0);    rc = zmq_setsockopt (client, ZMQ_CURVE_PUBLICKEY, garbage_key, 41);    assert (rc == 0);    rc = zmq_setsockopt (client, ZMQ_CURVE_SECRETKEY, client_secret, 41);    assert (rc == 0);    rc = zmq_connect (client, "tcp://localhost:9998");    assert (rc == 0);    expect_bounce_fail (server, client);    close_zero_linger (client);    //  Check CURVE security with a garbage client secret key    //  This will be caught by the curve_server class, not passed to ZAP    client = zmq_socket (ctx, ZMQ_DEALER);    assert (client);    rc = zmq_setsockopt (client, ZMQ_CURVE_SERVERKEY, server_public, 41);    assert (rc == 0);    rc = zmq_setsockopt (client, ZMQ_CURVE_PUBLICKEY, client_public, 41);    assert (rc == 0);    rc = zmq_setsockopt (client, ZMQ_CURVE_SECRETKEY, garbage_key, 41);    assert (rc == 0);    rc = zmq_connect (client, "tcp://localhost:9998");    assert (rc == 0);    expect_bounce_fail (server, client);    close_zero_linger (client);    //  Check CURVE security with bogus client credentials    //  This must be caught by the ZAP handler    char bogus_public [41];    char bogus_secret [41];    zmq_curve_keypair (bogus_public, bogus_secret);    client = zmq_socket (ctx, ZMQ_DEALER);    assert (client);    rc = zmq_setsockopt (client, ZMQ_CURVE_SERVERKEY, server_public, 41);    assert (rc == 0);    rc = zmq_setsockopt (client, ZMQ_CURVE_PUBLICKEY, bogus_public, 41);    assert (rc == 0);    rc = zmq_setsockopt (client, ZMQ_CURVE_SECRETKEY, bogus_secret, 41);    assert (rc == 0);    rc = zmq_connect (client, "tcp://localhost:9998");    assert (rc == 0);    expect_bounce_fail (server, client);    close_zero_linger (client);    //  Check CURVE security with NULL client credentials    //  This must be caught by the curve_server class, not passed to ZAP    client = zmq_socket (ctx, ZMQ_DEALER);    assert (client);    rc = zmq_connect (client, "tcp://localhost:9998");    assert (rc == 0);    expect_bounce_fail (server, client);    close_zero_linger (client);    //  Check CURVE security with PLAIN client credentials    //  This must be caught by the curve_server class, not passed to ZAP    client = zmq_socket (ctx, ZMQ_DEALER);    assert (client);    rc = zmq_setsockopt (client, ZMQ_PLAIN_USERNAME, "admin", 5);    assert (rc == 0);    rc = zmq_setsockopt (client, ZMQ_PLAIN_PASSWORD, "password", 8);    assert (rc == 0);    expect_bounce_fail (server, client);    close_zero_linger (client);        //  Shutdown    rc = zmq_close (server);    assert (rc == 0);    rc = zmq_ctx_term (ctx);    assert (rc == 0);    //  Wait until ZAP handler terminates    zmq_threadclose (zap_thread);    return 0;}
开发者ID:JianchengZh,项目名称:libzmq,代码行数:101,


示例3: main

int main (void){    setup_test_environment ();    void *ctx = zmq_ctx_new ();    assert (ctx);    g_clients_pkts_out = zmq_atomic_counter_new ();    g_workers_pkts_out = zmq_atomic_counter_new ();    // Control socket receives terminate command from main over inproc    void *control = zmq_socket (ctx, ZMQ_PUB);    assert (control);    int linger = 0;    int rc = zmq_setsockopt (control, ZMQ_LINGER, &linger, sizeof (linger));    assert (rc == 0);    rc = zmq_bind (control, "inproc://control");    assert (rc == 0);    // Control socket receives terminate command from main over inproc    void *control_proxy = zmq_socket (ctx, ZMQ_REQ);    assert (control_proxy);    rc = zmq_setsockopt (control_proxy, ZMQ_LINGER, &linger, sizeof (linger));    assert (rc == 0);    rc = zmq_bind (control_proxy, "inproc://control_proxy");    assert (rc == 0);    void *threads[QT_CLIENTS + 1];    struct thread_data databags[QT_CLIENTS + 1];    for (int i = 0; i < QT_CLIENTS; i++) {        databags[i].ctx = ctx;        databags[i].id = i;        threads[i] = zmq_threadstart (&client_task, &databags[i]);    }    threads[QT_CLIENTS] = zmq_threadstart (&server_task, ctx);    msleep (500); // Run for 500 ms then quit    if (is_verbose)        printf ("stopping all clients and server workers/n");    rc = zmq_send (control, "STOP", 4, 0);    assert (rc == 4);    msleep (500); // Wait for all clients and workers to STOP#ifdef ZMQ_BUILD_DRAFT_API    if (is_verbose)        printf ("retrieving stats from the proxy/n");    check_proxy_stats (control_proxy);#endif    if (is_verbose)        printf ("shutting down all clients and server workers/n");    rc = zmq_send (control, "TERMINATE", 9, 0);    assert (rc == 9);    if (is_verbose)        printf ("shutting down the proxy/n");    rc = zmq_send (control_proxy, "TERMINATE", 9, 0);    assert (rc == 9);    rc = zmq_close (control);    assert (rc == 0);    rc = zmq_close (control_proxy);    assert (rc == 0);    for (int i = 0; i < QT_CLIENTS + 1; i++)        zmq_threadclose (threads[i]);    rc = zmq_ctx_term (ctx);    assert (rc == 0);    return 0;}
开发者ID:cuijw,项目名称:libzmq,代码行数:76,


示例4: main

//.........这里部分代码省略.........    rc = zmq_poller_add (poller, sink, sink, ZMQ_POLLIN);    assert (rc == 0);    //  Send a message    char data[1] = {'H'};    rc = zmq_send_const (vent, data, 1, 0);    assert (rc == 1);    //  We expect a message only on the sink    rc = zmq_poller_wait (poller, &event, -1);    assert (rc == 0);    assert (event.socket == sink);    assert (event.user_data == sink);    rc = zmq_recv (sink, data, 1, 0);    assert (rc == 1);    //  We expect timed out    rc = zmq_poller_wait (poller, &event, 0);    assert (rc == -1);    assert (errno == EAGAIN);    //  Stop polling sink    rc = zmq_poller_remove (poller, sink);    assert (rc == 0);    //  Check we can poll an FD    rc = zmq_connect (bowl, my_endpoint_0);    assert (rc == 0);    fd_t fd;    size_t fd_size = sizeof (fd);    rc = zmq_getsockopt (bowl, ZMQ_FD, &fd, &fd_size);    assert (rc == 0);    rc = zmq_poller_add_fd (poller, fd, bowl, ZMQ_POLLIN);    assert (rc == 0);    rc = zmq_poller_wait (poller, &event, 500);    assert (rc == 0);    assert (event.socket == NULL);    assert (event.fd == fd);    assert (event.user_data == bowl);    zmq_poller_remove_fd (poller, fd);#if defined(ZMQ_SERVER) && defined(ZMQ_CLIENT)    //  Polling on thread safe sockets    rc = zmq_poller_add (poller, server, NULL, ZMQ_POLLIN);    assert (rc == 0);    rc = zmq_connect (client, my_endpoint_1);    assert (rc == 0);    rc = zmq_send_const (client, data, 1, 0);    assert (rc == 1);    rc = zmq_poller_wait (poller, &event, 500);    assert (rc == 0);    assert (event.socket == server);    assert (event.user_data == NULL);    rc = zmq_recv (server, data, 1, 0);    assert (rc == 1);    //  Polling on pollout    rc = zmq_poller_modify (poller, server, ZMQ_POLLOUT | ZMQ_POLLIN);    assert (rc == 0);    rc = zmq_poller_wait (poller, &event, 0);    assert (rc == 0);    assert (event.socket == server);    assert (event.user_data == NULL);    assert (event.events == ZMQ_POLLOUT);    //  Stop polling server    rc = zmq_poller_remove (poller, server);    assert (rc == 0);#endif    //  Destroy sockets, poller and ctx    rc = zmq_close (sink);    assert (rc == 0);    rc = zmq_close (vent);    assert (rc == 0);    rc = zmq_close (bowl);    assert (rc == 0);#if defined(ZMQ_SERVER) && defined(ZMQ_CLIENT)    rc = zmq_close (server);    assert (rc == 0);    rc = zmq_close (client);    assert (rc == 0);#endif    test_null_poller_pointers (ctx);    test_null_socket_pointers ();    test_null_event_pointers (ctx);    test_add_modify_remove_corner_cases (ctx);    test_wait_corner_cases ();    rc = zmq_poller_destroy (&poller);    assert (rc == 0);    rc = zmq_ctx_term (ctx);    assert (rc == 0);    return 0;}
开发者ID:AmesianX,项目名称:libzmq,代码行数:101,


示例5: main

int main (void){    setup_test_environment();    void *ctx = zmq_ctx_new ();    assert (ctx);    //  Spawn ZAP handler    //  We create and bind ZAP socket in main thread to avoid case    //  where child thread does not start up fast enough.    void *handler = zmq_socket (ctx, ZMQ_REP);    assert (handler);    int rc = zmq_bind (handler, "inproc://zeromq.zap.01");    assert (rc == 0);    void *zap_thread = zmq_threadstart (&zap_handler, handler);    //  We bounce between a binding server and a connecting client    //     //  We first test client/server with no ZAP domain//     //  Libzmq does not call our ZAP handler, the connect must succeed//     void *server = zmq_socket (ctx, ZMQ_DEALER);//     assert (server);//     void *client = zmq_socket (ctx, ZMQ_DEALER);//     assert (client);//     rc = zmq_bind (server, "tcp://127.0.0.1:9000");//     assert (rc == 0);//     rc = zmq_connect (client, "tcp://127.0.0.1:9000");//     assert (rc == 0);//     bounce (server, client);//     close_zero_linger (client);//     close_zero_linger (server);    //  Now define a ZAP domain for the server; this enables     //  authentication. We're using the wrong domain so this test    //  must fail.    void *server = zmq_socket (ctx, ZMQ_DEALER);    assert (server);    void *client = zmq_socket (ctx, ZMQ_DEALER);    assert (client);    rc = zmq_setsockopt (server, ZMQ_ZAP_DOMAIN, "WRONG", 5);    assert (rc == 0);    rc = zmq_bind (server, "tcp://127.0.0.1:9001");    assert (rc == 0);    rc = zmq_connect (client, "tcp://127.0.0.1:9001");    assert (rc == 0);    expect_bounce_fail (server, client);    close_zero_linger (client);    close_zero_linger (server);//     //  Now use the right domain, the test must pass//     server = zmq_socket (ctx, ZMQ_DEALER);//     assert (server);//     client = zmq_socket (ctx, ZMQ_DEALER);//     assert (client);//     rc = zmq_setsockopt (server, ZMQ_ZAP_DOMAIN, "TEST", 4);//     assert (rc == 0);//     rc = zmq_bind (server, "tcp://127.0.0.1:9002");//     assert (rc == 0);//     rc = zmq_connect (client, "tcp://127.0.0.1:9002");//     assert (rc == 0);//     bounce (server, client);//     close_zero_linger (client);//     close_zero_linger (server);    //  Shutdown    rc = zmq_ctx_term (ctx);    assert (rc == 0);    //  Wait until ZAP handler terminates    zmq_threadclose (zap_thread);    return 0;}
开发者ID:dimouts,项目名称:libzmq,代码行数:71,


示例6: zmq_ctx_destroy

int zmq_ctx_destroy (void *ctx_){    return zmq_ctx_term (ctx_);}
开发者ID:Samx2015,项目名称:libzmq,代码行数:4,


示例7: main

int main (void){    setup_test_environment();    size_t len = MAX_SOCKET_STRING;    char endpoint1[MAX_SOCKET_STRING];    char endpoint2[MAX_SOCKET_STRING];    void *ctx = zmq_ctx_new ();    assert (ctx);    //  First, create an intermediate device    void *xpub = zmq_socket (ctx, ZMQ_XPUB);    assert (xpub);    int rc = zmq_bind (xpub, "tcp://127.0.0.1:*");    assert (rc == 0);    rc = zmq_getsockopt (xpub, ZMQ_LAST_ENDPOINT, endpoint1, &len);    assert (rc == 0);    void *xsub = zmq_socket (ctx, ZMQ_XSUB);    assert (xsub);    rc = zmq_bind (xsub, "tcp://127.0.0.1:*");    assert (rc == 0);    len = MAX_SOCKET_STRING;    rc = zmq_getsockopt (xsub, ZMQ_LAST_ENDPOINT, endpoint2, &len);    assert (rc == 0);    //  Create a publisher    void *pub = zmq_socket (ctx, ZMQ_PUB);    assert (pub);    rc = zmq_connect (pub, endpoint2);    assert (rc == 0);    //  Create a subscriber    void *sub = zmq_socket (ctx, ZMQ_SUB);    assert (sub);    rc = zmq_connect (sub, endpoint1);    assert (rc == 0);    //  Subscribe for all messages.    rc = zmq_setsockopt (sub, ZMQ_SUBSCRIBE, "", 0);    assert (rc == 0);    //  Pass the subscription upstream through the device    char buff [32];    rc = zmq_recv (xpub, buff, sizeof (buff), 0);    assert (rc >= 0);    rc = zmq_send (xsub, buff, rc, 0);    assert (rc >= 0);    //  Wait a bit till the subscription gets to the publisher    msleep (SETTLE_TIME);    //  Send an empty message    rc = zmq_send (pub, NULL, 0, 0);    assert (rc == 0);    //  Pass the message downstream through the device    rc = zmq_recv (xsub, buff, sizeof (buff), 0);    assert (rc >= 0);    rc = zmq_send (xpub, buff, rc, 0);    assert (rc >= 0);    //  Receive the message in the subscriber    rc = zmq_recv (sub, buff, sizeof (buff), 0);    assert (rc == 0);    //  Clean up.    rc = zmq_close (xpub);    assert (rc == 0);    rc = zmq_close (xsub);    assert (rc == 0);    rc = zmq_close (pub);    assert (rc == 0);    rc = zmq_close (sub);    assert (rc == 0);    rc = zmq_ctx_term (ctx);    assert (rc == 0);    return 0 ;}
开发者ID:AmesianX,项目名称:libzmq,代码行数:78,


示例8: main

int main (void){    void *ctx = zmq_ctx_new ();    assert (ctx);    //  First, create an intermediate device    void *xpub = zmq_socket (ctx, ZMQ_XPUB);    assert (xpub);    int rc = zmq_bind (xpub, "tcp://127.0.0.1:5560");    assert (rc == 0);    void *xsub = zmq_socket (ctx, ZMQ_XSUB);    assert (xsub);    rc = zmq_bind (xsub, "tcp://127.0.0.1:5561");    assert (rc == 0);    //  Create a publisher    void *pub = zmq_socket (ctx, ZMQ_PUB);    assert (pub);    rc = zmq_connect (pub, "tcp://127.0.0.1:5561");    assert (rc == 0);    //  Create a subscriber    void *sub = zmq_socket (ctx, ZMQ_SUB);    assert (sub);    rc = zmq_connect (sub, "tcp://127.0.0.1:5560");    assert (rc == 0);    //  Subscribe for all messages.    rc = zmq_setsockopt (sub, ZMQ_SUBSCRIBE, "", 0);    assert (rc == 0);    //  Pass the subscription upstream through the device    char buff [32];    rc = zmq_recv (xpub, buff, sizeof (buff), 0);    assert (rc >= 0);    rc = zmq_send (xsub, buff, rc, 0);    assert (rc >= 0);    //  Wait a bit till the subscription gets to the publisher    struct timespec t = { 0, 250 * 1000000 };    nanosleep (&t, NULL);    //  Send an empty message    rc = zmq_send (pub, NULL, 0, 0);    assert (rc == 0);    //  Pass the message downstream through the device    rc = zmq_recv (xsub, buff, sizeof (buff), 0);    assert (rc >= 0);    rc = zmq_send (xpub, buff, rc, 0);    assert (rc >= 0);    //  Receive the message in the subscriber    rc = zmq_recv (sub, buff, sizeof (buff), 0);    assert (rc == 0);    //  Clean up.    rc = zmq_close (xpub);    assert (rc == 0);    rc = zmq_close (xsub);    assert (rc == 0);    rc = zmq_close (pub);    assert (rc == 0);    rc = zmq_close (sub);    assert (rc == 0);    rc = zmq_ctx_term (ctx);    assert (rc == 0);    return 0 ;}
开发者ID:DavidPowell,项目名称:libzmq,代码行数:70,


示例9: main

int main (int argc, char *argv[]){    if (argc != 3) {        printf ("usage: inproc_thr <message-size> <message-count>/n");        return 1;    }    message_size = atoi (argv[1]);    message_count = atoi (argv[2]);    printf ("message size: %d [B]/n", (int) message_size);    printf ("message count: %d/n", (int) message_count);    void *context = zmq_ctx_new ();    assert (context);    int rv = zmq_ctx_set (context, ZMQ_IO_THREADS, 4);    assert (rv == 0);    //  START ALL SECONDARY THREADS    const char *pub1 = "inproc://perf_pub1";    const char *pub2 = "inproc://perf_pub2";    const char *sub1 = "inproc://perf_backend";    proxy_hwm_cfg_t cfg_global = {};    cfg_global.context = context;    cfg_global.frontend_endpoint[0] = pub1;    cfg_global.frontend_endpoint[1] = pub2;    cfg_global.backend_endpoint[0] = sub1;    cfg_global.control_endpoint = "inproc://ctrl";    //  Proxy    proxy_hwm_cfg_t cfg_proxy = cfg_global;    void *proxy = zmq_threadstart (&proxy_thread_main, (void *) &cfg_proxy);    assert (proxy != 0);    //  Subscriber 1    proxy_hwm_cfg_t cfg_sub1 = cfg_global;    cfg_sub1.thread_idx = 0;    void *subscriber =      zmq_threadstart (&subscriber_thread_main, (void *) &cfg_sub1);    assert (subscriber != 0);    //  Start measuring    void *watch = zmq_stopwatch_start ();    //  Publisher 1    proxy_hwm_cfg_t cfg_pub1 = cfg_global;    cfg_pub1.thread_idx = 0;    void *publisher1 =      zmq_threadstart (&publisher_thread_main, (void *) &cfg_pub1);    assert (publisher1 != 0);    //  Publisher 2    proxy_hwm_cfg_t cfg_pub2 = cfg_global;    cfg_pub2.thread_idx = 1;    void *publisher2 =      zmq_threadstart (&publisher_thread_main, (void *) &cfg_pub2);    assert (publisher2 != 0);    //  Wait for all packets to be received    zmq_threadclose (subscriber);    //  Stop measuring    unsigned long elapsed = zmq_stopwatch_stop (watch);    if (elapsed == 0)        elapsed = 1;    unsigned long throughput =      (unsigned long) ((double) message_count / (double) elapsed * 1000000);    double megabits = (double) (throughput * message_size * 8) / 1000000;    printf ("mean throughput: %d [msg/s]/n", (int) throughput);    printf ("mean throughput: %.3f [Mb/s]/n", (double) megabits);    //  Wait for the end of publishers...    zmq_threadclose (publisher1);    zmq_threadclose (publisher2);    //  ... then close the proxy    terminate_proxy (&cfg_proxy);    zmq_threadclose (proxy);    int rc = zmq_ctx_term (context);    assert (rc == 0);    return 0;}
开发者ID:somdoron,项目名称:libzmq,代码行数:88,


示例10: main

int main (void){    setup_test_environment();    void *ctx = zmq_ctx_new ();    assert (ctx);    //  Spawn ZAP handler    void *zap_thread = zmq_threadstart (&zap_handler, ctx);    //  Server socket will accept connections    void *server = zmq_socket (ctx, ZMQ_DEALER);    assert (server);    int rc = zmq_setsockopt (server, ZMQ_IDENTITY, "IDENT", 6);    assert (rc == 0);    int as_server = 1;    rc = zmq_setsockopt (server, ZMQ_PLAIN_SERVER, &as_server, sizeof (int));    assert (rc == 0);    rc = zmq_bind (server, "tcp://127.0.0.1:9998");    assert (rc == 0);    char username [256];    char password [256];    //  Check PLAIN security with correct username/password    void *client = zmq_socket (ctx, ZMQ_DEALER);    assert (client);    strcpy (username, "admin");    rc = zmq_setsockopt (client, ZMQ_PLAIN_USERNAME, username, strlen (username));    assert (rc == 0);    strcpy (password, "password");    rc = zmq_setsockopt (client, ZMQ_PLAIN_PASSWORD, password, strlen (password));    assert (rc == 0);    rc = zmq_connect (client, "tcp://localhost:9998");    assert (rc == 0);    bounce (server, client);    rc = zmq_close (client);    assert (rc == 0);    //  Check PLAIN security with badly configured client (as_server)    //  This will be caught by the plain_server class, not passed to ZAP    client = zmq_socket (ctx, ZMQ_DEALER);    assert (client);    as_server = 1;    rc = zmq_setsockopt (client, ZMQ_PLAIN_SERVER, &as_server, sizeof (int));    assert (rc == 0);    rc = zmq_connect (client, "tcp://localhost:9998");    assert (rc == 0);    expect_bounce_fail (server, client);    close_zero_linger (client);    //  Check PLAIN security -- failed authentication    client = zmq_socket (ctx, ZMQ_DEALER);    assert (client);    strcpy (username, "wronguser");    strcpy (password, "wrongpass");    rc = zmq_setsockopt (client, ZMQ_PLAIN_USERNAME, username, strlen (username));    assert (rc == 0);    rc = zmq_setsockopt (client, ZMQ_PLAIN_PASSWORD, password, strlen (password));    assert (rc == 0);    rc = zmq_connect (client, "tcp://localhost:9998");    assert (rc == 0);    expect_bounce_fail (server, client);    close_zero_linger (client);    // Unauthenticated messages from a vanilla socket shouldn't be received    struct sockaddr_in ip4addr;    int s;    ip4addr.sin_family = AF_INET;    ip4addr.sin_port = htons (9998);    inet_pton (AF_INET, "127.0.0.1", &ip4addr.sin_addr);    s = socket (AF_INET, SOCK_STREAM, IPPROTO_TCP);    rc = connect (s, (struct sockaddr*) &ip4addr, sizeof (ip4addr));    assert (rc > -1);    // send anonymous ZMTP/1.0 greeting    send (s, "/x01/x00", 2, 0);    // send sneaky message that shouldn't be received    send (s, "/x08/x00sneaky/0", 9, 0);    int timeout = 250;    zmq_setsockopt (server, ZMQ_RCVTIMEO, &timeout, sizeof (timeout));    char *buf = s_recv (server);    if (buf != NULL) {        printf ("Received unauthenticated message: %s/n", buf);        assert (buf == NULL);    }    close (s);    //  Shutdown    rc = zmq_close (server);    assert (rc == 0);    rc = zmq_ctx_term (ctx);    assert (rc == 0);    //  Wait until ZAP handler terminates    zmq_threadclose (zap_thread);    return 0;}
开发者ID:Wavetrend,项目名称:libzmq,代码行数:99,


示例11: main

//.........这里部分代码省略.........    void *dealer = zmq_socket (ctx, ZMQ_DEALER);    assert (dealer);    rc = zmq_setsockopt (dealer, ZMQ_LINGER, &zero, sizeof (zero));    assert (rc == 0);    rc = zmq_connect (dealer, "tcp://localhost:5555");    //  Send a message on the dealer socket    rc = zmq_send (dealer, "Hello", 5, 0);    assert (rc == 5);    //  First frame is identity    zmq_msg_t identity;    rc = zmq_msg_init (&identity);    assert (rc == 0);    rc = zmq_msg_recv (&identity, router, 0);    assert (rc > 0);    assert (zmq_msg_more (&identity));    //  Second frame is greeting signature    byte buffer [255];    rc = zmq_recv (router, buffer, 255, 0);    assert (rc == 10);    assert (memcmp (buffer, greeting.signature, 10) == 0);    //  Send our own protocol greeting    rc = zmq_msg_send (&identity, router, ZMQ_SNDMORE);    assert (rc > 0);    rc = zmq_send (router, &greeting, sizeof (greeting), 0);    assert (rc == sizeof (greeting));    //  Now we expect the data from the DEALER socket    //  First frame is, again, the identity of the connection    rc = zmq_msg_recv (&identity, router, 0);    assert (rc > 0);    assert (zmq_msg_more (&identity));    //  Second frame contains the rest of greeting along with    //  the Ready command    rc = zmq_recv (router, buffer, 255, 0);    assert (rc == 97);    //  First two bytes are major and minor version numbers.    assert (buffer [0] == 3);       //  ZMTP/3.0    assert (buffer [1] == 0);    //  Mechanism is "NULL"    assert (memcmp (buffer + 2, "NULL/0/0/0/0/0/0/0/0/0/0/0/0/0/0/0/0", 22) == 0);    assert (memcmp (buffer + 54, "/0/51READY/0", 8) == 0);    assert (memcmp (buffer + 62, "/13Socket-Type/0/0/0/6DEALER", 22) == 0);    assert (memcmp (buffer + 84, "/10Identity/0/0/0/0", 13) == 0);    //  Announce we are ready    memcpy (buffer, "/0/51READY/0", 8);    memcpy (buffer + 8, "/13Socket-Type/0/0/0/6STREAM", 22);    memcpy (buffer + 30, "/10Identity/0/0/0/0", 13);    //  Send Ready command    rc = zmq_msg_send (&identity, router, ZMQ_SNDMORE);    assert (rc > 0);    rc = zmq_send (router, buffer, 43, 0);    assert (rc == 43);    //  Now we expect the data from the DEALER socket    //  First frame is, again, the identity of the connection    rc = zmq_msg_recv (&identity, router, 0);    assert (rc > 0);    assert (zmq_msg_more (&identity));    //  Third frame contains Hello message from DEALER    rc = zmq_recv (router, buffer, sizeof buffer, 0);    assert (rc == 7);    //  Then we have a 5-byte message "Hello"    assert (buffer [0] == 0);       //  Flags = 0    assert (buffer [1] == 5);       //  Size = 5    assert (memcmp (buffer + 2, "Hello", 5) == 0);    //  Send "World" back to DEALER    rc = zmq_msg_send (&identity, router, ZMQ_SNDMORE);    assert (rc > 0);    byte world [] = { 0, 5, 'W', 'o', 'r', 'l', 'd' };    rc = zmq_send (router, world, sizeof (world), 0);    assert (rc == sizeof (world));    //  Expect response on DEALER socket    rc = zmq_recv (dealer, buffer, 255, 0);    assert (rc == 5);    assert (memcmp (buffer, "World", 5) == 0);    rc = zmq_close (dealer);    assert (rc == 0);    rc = zmq_close (router);    assert (rc == 0);    rc = zmq_ctx_term (ctx);    assert (rc == 0);    return 0;}
开发者ID:leewoosung,项目名称:libzmq,代码行数:101,


示例12: test_stream_handshake_timeout_accept

static voidtest_stream_handshake_timeout_accept (void){    int rc;    //  Set up our context and sockets    void *ctx = zmq_ctx_new ();    assert (ctx);    //  We use this socket in raw mode, to make a connection and send nothing    void *stream = zmq_socket (ctx, ZMQ_STREAM);    assert (stream);    int zero = 0;    rc = zmq_setsockopt (stream, ZMQ_LINGER, &zero, sizeof (zero));    assert (rc == 0);    rc = zmq_connect (stream, "tcp://localhost:5557");    assert (rc == 0);    //  We'll be using this socket to test TCP stream handshake timeout    void *dealer = zmq_socket (ctx, ZMQ_DEALER);    assert (dealer);    rc = zmq_setsockopt (dealer, ZMQ_LINGER, &zero, sizeof (zero));    assert (rc == 0);    int val, tenth = 100;    size_t vsize = sizeof(val);    // check for the expected default handshake timeout value - 30 sec    rc = zmq_getsockopt (dealer, ZMQ_HANDSHAKE_IVL, &val, &vsize);    assert (rc == 0);    assert (vsize == sizeof(val));    assert (val == 30000);    // make handshake timeout faster - 1/10 sec    rc = zmq_setsockopt (dealer, ZMQ_HANDSHAKE_IVL, &tenth, sizeof (tenth));    assert (rc == 0);    vsize = sizeof(val);    // make sure zmq_setsockopt changed the value    rc = zmq_getsockopt (dealer, ZMQ_HANDSHAKE_IVL, &val, &vsize);    assert (rc == 0);    assert (vsize == sizeof(val));    assert (val == tenth);    //  Create and connect a socket for collecting monitor events on dealer    void *dealer_mon = zmq_socket (ctx, ZMQ_PAIR);    assert (dealer_mon);    rc = zmq_socket_monitor (dealer, "inproc://monitor-dealer",          ZMQ_EVENT_CONNECTED | ZMQ_EVENT_DISCONNECTED | ZMQ_EVENT_ACCEPTED);    assert (rc == 0);    //  Connect to the inproc endpoint so we'll get events    rc = zmq_connect (dealer_mon, "inproc://monitor-dealer");    assert (rc == 0);    // bind dealer socket to accept connection from non-sending stream socket    rc = zmq_bind (dealer, "tcp://127.0.0.1:5557");    assert (rc == 0);    // we should get ZMQ_EVENT_ACCEPTED and then ZMQ_EVENT_DISCONNECTED    int event = get_monitor_event (dealer_mon, NULL, NULL);    assert (event == ZMQ_EVENT_ACCEPTED);    event = get_monitor_event (dealer_mon, NULL, NULL);    assert (event == ZMQ_EVENT_DISCONNECTED);    rc = zmq_close (dealer);    assert (rc == 0);    rc = zmq_close (dealer_mon);    assert (rc == 0);    rc = zmq_close (stream);    assert (rc == 0);    rc = zmq_ctx_term (ctx);    assert (rc == 0);}
开发者ID:5igm4,项目名称:libzmq,代码行数:76,


示例13: main

int main (void){    setup_test_environment();    int val;    int rc;    char buffer[16];    // TEST 1.     // First we're going to attempt to send messages to two    // pipes, one connected, the other not. We should see    // the PUSH load balancing to both pipes, and hence half    // of the messages getting queued, as connect() creates a    // pipe immediately.         void *context = zmq_ctx_new();    assert (context);    void *to = zmq_socket(context, ZMQ_PULL);    assert (to);    // Bind the one valid receiver    val = 0;    rc = zmq_setsockopt(to, ZMQ_LINGER, &val, sizeof(val));    assert (rc == 0);    rc = zmq_bind (to, "tcp://127.0.0.1:6555");    assert (rc == 0);    // Create a socket pushing to two endpoints - only 1 message should arrive.    void *from = zmq_socket (context, ZMQ_PUSH);    assert(from);    val = 0;    zmq_setsockopt (from, ZMQ_LINGER, &val, sizeof (val));    // This pipe will not connect    rc = zmq_connect (from, "tcp://localhost:5556");    assert (rc == 0);    // This pipe will     rc = zmq_connect (from, "tcp://localhost:6555");    assert (rc == 0);    // We send 10 messages, 5 should just get stuck in the queue    // for the not-yet-connected pipe    for (int i = 0; i < 10; ++i) {        rc = zmq_send (from, "Hello", 5, 0);        assert (rc == 5);    }    // We now consume from the connected pipe    // - we should see just 5    int timeout = 250;    rc = zmq_setsockopt (to, ZMQ_RCVTIMEO, &timeout, sizeof (int));    assert (rc == 0);    int seen = 0;    while (true) {        rc = zmq_recv (to, &buffer, sizeof (buffer), 0);        if (rc == -1)            break;          //  Break when we didn't get a message        seen++;    }    assert (seen == 5);    rc = zmq_close (from);    assert (rc == 0);    rc = zmq_close (to);    assert (rc == 0);    rc = zmq_ctx_term (context);    assert (rc == 0);    // TEST 2    // This time we will do the same thing, connect two pipes,     // one of which will succeed in connecting to a bound     // receiver, the other of which will fail. However, we will     // also set the delay attach on connect flag, which should     // cause the pipe attachment to be delayed until the connection    // succeeds.     context = zmq_ctx_new();    // Bind the valid socket    to = zmq_socket (context, ZMQ_PULL);    assert (to);    rc = zmq_bind (to, "tcp://127.0.0.1:5560");    assert (rc == 0);    val = 0;    rc = zmq_setsockopt (to, ZMQ_LINGER, &val, sizeof(val));    assert (rc == 0);    // Create a socket pushing to two endpoints - all messages should arrive.    from = zmq_socket (context, ZMQ_PUSH);    assert (from);    val = 0;    rc = zmq_setsockopt (from, ZMQ_LINGER, &val, sizeof(val));    assert (rc == 0);    // Set the key flag    val = 1;    rc = zmq_setsockopt (from, ZMQ_IMMEDIATE, &val, sizeof(val));    assert (rc == 0);//.........这里部分代码省略.........
开发者ID:HJoYer,项目名称:libzmq,代码行数:101,


示例14: main

//.........这里部分代码省略.........    if (!s) {        printf ("error in zmq_socket: %s/n", zmq_strerror (errno));        return -1;    }    rc = zmq_bind (s, "inproc://lat_test");    if (rc != 0) {        printf ("error in zmq_bind: %s/n", zmq_strerror (errno));        return -1;    }#if defined ZMQ_HAVE_WINDOWS    local_thread = (HANDLE) _beginthreadex (NULL, 0,        worker, ctx, 0 , NULL);    if (local_thread == 0) {        printf ("error in _beginthreadex/n");        return -1;    }#else    rc = pthread_create (&local_thread, NULL, worker, ctx);    if (rc != 0) {        printf ("error in pthread_create: %s/n", zmq_strerror (rc));        return -1;    }#endif    rc = zmq_msg_init_size (&msg, message_size);    if (rc != 0) {        printf ("error in zmq_msg_init_size: %s/n", zmq_strerror (errno));        return -1;    }    memset (zmq_msg_data (&msg), 0, message_size);    printf ("message size: %d [B]/n", (int) message_size);    printf ("roundtrip count: %d/n", (int) roundtrip_count);    watch = zmq_stopwatch_start ();    for (i = 0; i != roundtrip_count; i++) {        rc = zmq_sendmsg (s, &msg, 0);        if (rc < 0) {            printf ("error in zmq_sendmsg: %s/n", zmq_strerror (errno));            return -1;        }        rc = zmq_recvmsg (s, &msg, 0);        if (rc < 0) {            printf ("error in zmq_recvmsg: %s/n", zmq_strerror (errno));            return -1;        }        if (zmq_msg_size (&msg) != message_size) {            printf ("message of incorrect size received/n");            return -1;        }    }    elapsed = zmq_stopwatch_stop (watch);    rc = zmq_msg_close (&msg);    if (rc != 0) {        printf ("error in zmq_msg_close: %s/n", zmq_strerror (errno));        return -1;    }    latency = (double) elapsed / (roundtrip_count * 2);#if defined ZMQ_HAVE_WINDOWS    DWORD rc2 = WaitForSingleObject (local_thread, INFINITE);    if (rc2 == WAIT_FAILED) {        printf ("error in WaitForSingleObject/n");        return -1;    }    BOOL rc3 = CloseHandle (local_thread);    if (rc3 == 0) {        printf ("error in CloseHandle/n");        return -1;    }#else    rc = pthread_join (local_thread, NULL);    if (rc != 0) {        printf ("error in pthread_join: %s/n", zmq_strerror (rc));        return -1;    }#endif    printf ("average latency: %.3f [us]/n", (double) latency);    rc = zmq_close (s);    if (rc != 0) {        printf ("error in zmq_close: %s/n", zmq_strerror (errno));        return -1;    }    rc = zmq_ctx_term (ctx);    if (rc != 0) {        printf ("error in zmq_ctx_term: %s/n", zmq_strerror (errno));        return -1;    }    return 0;}
开发者ID:5igm4,项目名称:libzmq,代码行数:101,


示例15: main

int main(int, char**) {    setup_test_environment();    void* context = zmq_ctx_new();    void* pubSocket;    void* subSocket;    (pubSocket = zmq_socket(context, ZMQ_XPUB))         || printf("zmq_socket: %s/n", zmq_strerror(errno));    (subSocket = zmq_socket(context, ZMQ_SUB))          || printf("zmq_socket: %s/n", zmq_strerror(errno));    zmq_setsockopt(subSocket, ZMQ_SUBSCRIBE, "foo", 3)  && printf("zmq_setsockopt: %s/n",zmq_strerror(errno));      zmq_bind(pubSocket, "inproc://someInProcDescriptor") && printf("zmq_bind: %s/n", zmq_strerror(errno));    //zmq_bind(pubSocket, "tcp://127.0.0.1:30010") && printf("zmq_bind: %s/n", zmq_strerror(errno));      int more;    size_t more_size = sizeof(more);    int iteration = 0;      while (1) {        zmq_pollitem_t items [] = {            { subSocket, 0, ZMQ_POLLIN, 0 }, // read publications            { pubSocket, 0, ZMQ_POLLIN, 0 }, // read subscriptions        };        int rc = zmq_poll (items, 2, 100);            if (items [1].revents & ZMQ_POLLIN) {            while (1) {                zmq_msg_t msg;                zmq_msg_init (&msg);                zmq_msg_recv (&msg, pubSocket, 0);                char* buffer = (char*)zmq_msg_data(&msg);                if (buffer[0] == 0) {                    assert(isSubscribed);                    isSubscribed = false;                }                 else {                    assert(!isSubscribed);                    isSubscribed = true;                }                zmq_getsockopt (pubSocket, ZMQ_RCVMORE, &more, &more_size);                zmq_msg_close (&msg);                if (!more)                    break;      //  Last message part            }        }        if (items[0].revents & ZMQ_POLLIN) {            while (1) {                zmq_msg_t msg;                zmq_msg_init (&msg);                zmq_msg_recv (&msg, subSocket, 0);                zmq_getsockopt (subSocket, ZMQ_RCVMORE, &more, &more_size);                zmq_msg_close (&msg);                        if (!more) {                    publicationsReceived++;                    break;      //  Last message part                }            }        }        if (iteration == 1) {            zmq_connect(subSocket, "inproc://someInProcDescriptor") && printf("zmq_connect: %s/n", zmq_strerror(errno));            msleep (SETTLE_TIME);        }        if (iteration == 4) {            zmq_disconnect(subSocket, "inproc://someInProcDescriptor") && printf("zmq_disconnect(%d): %s/n", errno, zmq_strerror(errno));        }        if (iteration > 4 && rc == 0)            break;                zmq_msg_t channelEnvlp;        ZMQ_PREPARE_STRING(channelEnvlp, "foo", 3);        zmq_msg_send (&channelEnvlp, pubSocket, ZMQ_SNDMORE) >= 0 || printf("zmq_msg_send: %s/n",zmq_strerror(errno));        zmq_msg_close(&channelEnvlp) && printf("zmq_msg_close: %s/n",zmq_strerror(errno));        zmq_msg_t message;        ZMQ_PREPARE_STRING(message, "this is foo!", 12);        zmq_msg_send (&message, pubSocket, 0) >= 0 || printf("zmq_msg_send: %s/n",zmq_strerror(errno));        zmq_msg_close(&message) && printf("zmq_msg_close: %s/n",zmq_strerror(errno));        iteration++;    }    assert(publicationsReceived == 3);    assert(!isSubscribed);    zmq_close(pubSocket) && printf("zmq_close: %s", zmq_strerror(errno));    zmq_close(subSocket) && printf("zmq_close: %s", zmq_strerror(errno));      zmq_ctx_term(context);    return 0;}
开发者ID:5igm4,项目名称:libzmq,代码行数:93,


示例16: main

int main (void){#ifndef HAVE_LIBSODIUM    printf ("libsodium not installed, skipping CURVE test/n");    return 0;#endif    int rc;    size_t optsize;    int mechanism;    int as_server;        void *ctx = zmq_ctx_new ();    assert (ctx);    //  Server socket will accept connections    void *server = zmq_socket (ctx, ZMQ_DEALER);    assert (server);    //  Client socket that will try to connect to server    void *client = zmq_socket (ctx, ZMQ_DEALER);    assert (client);    //  Test keys from the zmq_curve man page    char client_public [] = "[email
C++ zmq_errno函数代码示例
C++ zmq_ctx_new函数代码示例
万事OK自学网:51自学网_软件自学网_CAD自学网自学excel、自学PS、自学CAD、自学C语言、自学css3实例,是一个通过网络自主学习工作技能的自学平台,网友喜欢的软件自学网站。