zmq-ios framwork

本文详细介绍了如何使用ZMQ库在iOS平台上实现客户端和服务端的通信。包括ZMQ框架的下载与导入,客户端发送消息流程,以及服务器端接收并回应消息的过程。通过实例代码展示了如何创建上下文、套接字类型、连接和发送接收数据。

1.附件见zeromq-ios.framework百度网盘/iOS/zmq

2.zeromq-ios.framework解压拖进工程文件
3.objc-zmq见百度网盘/iOS/zmq
4.objc-zmq.zip解压拖进工程文件
5.other link flags -lstdc++
6.客户端
#import “ZMQObjC.h"

   ZMQContext *ctx = [[ZMQContext alloc] initWithIOThreads:1];

    

    NSString *endpoint = @"tcp://localhost:5555";

    ZMQSocket *requester = [ctx socketWithType:ZMQ_REQ];

    BOOL didConnect = [requester connectToEndpoint:endpoint];

    if (!didConnect) {

        NSLog(@"*** Failed to connect to endpoint [%@].", endpoint);

        return;

    }

    

    int kMaxRequest = 10;

    NSData *request = [@"Hello" dataUsingEncoding:NSUTF8StringEncoding];

    for (int request_nbr = 0; request_nbr < kMaxRequest; ++request_nbr) {

        

        @autoreleasepool {

            

            NSLog(@"Sending request %d.", request_nbr);

            [requester sendData:request withFlags:0];

            

            NSLog(@"Waiting for reply");

            NSData *reply = [requester receiveDataWithFlags:0];

            NSString *text = [[NSString alloc] initWithData:reply encoding:NSUTF8StringEncoding];

            NSLog(@"Received reply %d: %@", request_nbr, text);

        }

        

    }

    

    

    [ctx closeSockets];

    [ctx terminate];

 

7.服务器端

#import “ZMQObjC.h"

    

    ZMQContext *ctx = [[ZMQContext alloc] initWithIOThreads:1];

    

    NSString *endpoint = @"tcp://*:5555";

    ZMQSocket *responder = [ctx socketWithType:ZMQ_REP];

    BOOL didBind = [responder bindToEndpoint:endpoint];

    if (!didBind) {

        NSLog(@"*** Failed to bind to endpoint [%@].", endpoint);

        return EXIT_FAILURE;

    }

    

    while (1) {

        @autoreleasepool {

            

            //  Wait for next request from client

            NSData *data = [responder receiveDataWithFlags:0];

            //NSData *data = [responder receiveWithBuffer:<#(void *)#> length:<#(size_t)#> flags:<#(ZMQMessageReceiveFlags)#>]

            NSString *text = [[NSString alloc]

                              initWithData:data encoding:NSUTF8StringEncoding];

            NSLog(@"Received request: %@", text);

            

            //  Do some 'work'

            NSLog(@"do some work");

            sleep (1);

            

            //  Send reply back to client

            NSString *world = @"World";

            NSData *reply = [world dataUsingEncoding:NSUTF8StringEncoding allowLossyConversion:YES];

            BOOL ok = [responder sendData:reply withFlags:0];

            if (!ok) {

                NSLog(@"failed to reply");

            }

        }

    }

    

    [ctx terminate];

 

 

转载于:https://www.cnblogs.com/yyzanll/p/4482449.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值