ios 与 python 服务器用messagepack 进行通信

messagepack 这种结构简单又跨语言的好东东,今天写了个测试

用来测试iOS 到 python 服务器的代码

双方收发 图片 文字 数字 类型这几种常用的也基本够用了。

 

1. 发送数据到服务器     

   UIImage *image = [UIImage imageNamed: @"/tmp/000.png"];
   NSData *imageData = UIImagePNGRepresentation(image);

  NSDictionary *dict =
        @{
          @"name": @"test",
          @"id":@(123456),
          @"type":@(1),
          @"array": @[@(1.1f), @(2.1)],
          @"payload": imageData,
          };
       

        NSError *error = nil;
        NSData *data = [MPMessagePackWriter writeObject:dict error:&error];

 

 

2. python 服务器收到数据 构件回复数据并回发

data_loaded = msgpack.unpackb(message)
name = data_loaded.get("name")
payload = data_loaded.get("payload")
if data_loaded.get("type") == 1:
    print "find"
    f = open( "/tmp/t.png", "wb" )
    f.write( payload )
    f.close()
else:
    print "not find"

stu = {
    'name': 'lili',
    'age': 18,
    'score': 100
}

stu['payload'] = payload
msg_str = msgpack.packb(stu, use_bin_type=False)

# Reverse Message and send it back
print 'sending back message: %s' % msg_str
self.write_message(msg_str,binary=True)
3. ios 收到数据并解析

    NSError * error;
    id obj = [MPMessagePackReader readData:message error:&error];
    NSDictionary* revDic = (NSDictionary*)obj;
    NSLog(@"%@",revDic);
    
    NSData* data = [revDic objectForKey:@"payload"];
    UIImage *image = [UIImage imageWithData:data];
    NSString *filePath = @"/tmp/ssss.png";
    
    NSString* name = [revDic objectForKey:@"name"];
    NSNumber* iddd = [revDic objectForKey:@"age"];
    NSInteger dd = [iddd integerValue];
    NSLog(@"age:%ld name:%@", dd, name);
    
    // Save image.
    [UIImagePNGRepresentation(image) writeToFile:filePath atomically:YES];

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值