文档章节

手机ios端通过json的方式通过socket通讯的坑

tb_engineer
 tb_engineer
发布于 2015/11/26 00:20
字数 358
阅读 551
收藏 1

        因为要适时获取后台的数据,所以通讯方式用了socket,然后问了后台协议,和传参,通过json方法,传递过去,

      因为socket通讯用的是AsyncSocket这个框架,首先我肯定要发送请求,[m_socket writeData:data withTimeout:-1 tag:0];,通过这  NSData *data= [[NSString stringWithFormat:@"%@\r\n",[dict JSONRepresentation]] dataUsingEncoding: NSUTF8StringEncoding];
    [m_socket writeData:data withTimeout:-1 tag:0];
   
    NSData *data = [dict JSONRepresentation]
   
个方法,这个data一般就是NSData类型,然后json数据类型不就是

 {"ask":"1.52841","bid":"1.52813","comment":"aa","symbol":"GBPUSD","cmd":0,"count":1,"login":420000179,"sl":0,"tp":0,"volume":1}

  这种类似于oc中字典的类型吗,然后字典转换成NSData类型不就可以了吗?于是就有了下面这段代码

  NSDictionary *dictionary = [NSJSONSerialization JSONObjectWithData:data options:NSJSONReadingAllowFragments error:&error];

     然后在这里说一下,option参数问题,百度的一般是

 NSDictionary *dictionary = [NSJSONSerialization JSONObjectWithData:data options:NSJSONWritingPrettyPrintederror:&error];

  这样会使要发送的json字段分成一段一段的,是分开的,通过后台证明的,

   NSData  *jsonData = [NSJSONSerialization dataWithJSONObject:dic options:NSJSONWritingPrettyPrinted error:&parseError];

还是不对,发送过去的事二进制数据,无法解析,最后不得不用了SBJSOn框架,有封装好的转JSon方法

   NSData *data= [[NSString stringWithFormat:@"%@\r\n",[dict JSONRepresentation]] dataUsingEncoding: NSUTF8StringEncoding];
    [m_socket writeData:data withTimeout:-1 tag:0];
    
    NSData *data = [dict JSONRepresentation]

注意:"\r\n",是代表包的结尾,我这里是这个的,其他环境可能不同,然后搞定。

 

© 著作权归作者所有

tb_engineer
粉丝 8
博文 24
码字总数 6322
作品 0
广州
程序员
私信 提问
求大神指点简历

简 历 个人信息 姓 名: xxx 性 别: 男 出生日期: 1990年1月7日 居住地址: 上海 工作年限: 二年 电子邮件: xxxx@163.com 手 机: 186xxxx6859 户 口: 身 高: 婚姻状况: 新疆 175cm ...

尐帥鱼
2013/06/14
873
11
恩布企业 IM iOS 客户端 0.9.7 发布

恩布企业 IM 的 iOS 苹果开源手机客户端 EntboostChat 发布 0.9.7 版本。 iOS苹果手机端主要更新内容: 增加IOS手机文件收发功能 增加网络通讯加密,确保信息安全 个人及聊天头像显示优化 修...

akee
2015/04/14
1K
0
常见的移动端H5页面开发遇到的坑和解决办法

手机共通问题 问题一:用同等比例的图片在PC机上很清楚,但是手机上很模糊,原因是什么呢? 经研究发现是devicePixelRatio作怪,因为手机分辨率太小,如果按照分辨率来显示网页字会非常小,所以苹果...

webmirror
2018/05/02
0
0
合格前端系列第七弹-移动端开发踩过的一些坑

前言: 两个月前开始全身心投入到公司的一个移动端项目,框架选型是vue,这篇文章也是在花费两个月的时间,项目一期完成之后得空进行的一片总结性文章,其中包括通用的移动端开发的坑以及vue...

qiangdada
2017/10/24
1K
1
IOS下WEBVIEW 的javascript数组与json定义 及交互

最近在折腾IOS新闻浏览客户端,当中需要用到webview传递JSON数据到IOS上,然后在IOS上解析。刚入门IOS不久,看了不少的书,但都是囫囵吞枣。在开发过程中,遇到不少问题。 开发环境 mac mini...

GIFCOOL
2013/08/20
4K
0

没有更多内容

加载失败,请刷新页面

加载更多

读书笔记:深入理解ES6 (五)

第五章 解构:使数据访问更便捷 第1节 为什么使用解构功能?   在ES5中,开发者们从对象、数组中获取特定数据并赋值给变量,编写了很多看起来同质化的代码。例如: 1 let options = {2 ...

张森ZS
15分钟前
15
0
CentOS7 yum方式安装MySQL5.7

在CentOS中默认安装有MariaDB,这个是MySQL的分支,但为了需要,还是要在系统中安装MySQL,而且安装完成之后可以直接覆盖掉MariaDB。 1 下载并安装MySQL官方的 Yum Repository [root@localho...

roockee
24分钟前
11
0
Allegro三种自定义设置快捷键的方法

Allegro自定义设置快捷键的三种方法: 1、在Allegro PCB editor 命令窗口直接定义 2、通过修改用户变量env文件来设置快捷键 3、定义笔画为快捷键 1、在Allegro PCB editor 命令窗口直接定义 ...

demyar
28分钟前
14
0
如何做一张能让人眼前一亮的大屏?

作为在职场驰骋的社会人,提到数据可视化大家应该都不陌生了。数据可视化的作用也不用我多说,主要是利用图形化手段,更清晰直观地将数据展示。多层次、交互式的可视化分析能够方便决策者理解...

朕想上头条
29分钟前
7
0
TL138/1808/6748-EthEVM开发板硬件CPU、FLASH、RAM

TL138/1808/6748-EthEVM是广州创龙基于SOM-TL138/1808/6748核心板开发的一款开发板,具有三个网络接口。由于SOM-TL138/1808/6748核心板管脚兼容,所以此三个核心板共用同一个底板。开发板采用...

Tronlong创龙
33分钟前
10
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部