qileilove

blog已经转移至github,大家请访问 http://qaseven.github.io/

iOS项目开发之Socket编程

 有一段时间没有认真总结和写博客了
  前段时间找工作、进入工作阶段。比较少静下来认真总结,现在静下心来总结一下最近的一些心得
  前言
  AsyncSocket介绍
  AsyncSocket详解
  AsyncSocket示例
  一、前言
  公司的项目用到了Socket编程,之前在学习的过程当中,用到的更多的还是http请求的方式。但是既然用到了就必须学习一下,所以就在网上找一些例子,然后想自己写一个demo。可是发现很多写iOS Socket的博客并没有很详细的说明,也可能是大神们觉得其他东西都浅显易懂。
  自己专研了一下,将自己的一些理解总结出来,一方面整理自己的学习思路,另一方面,为一些和我有同样困惑的小伙伴们,稍做指引。
  二、AsyncSocket介绍
  1)iOS中Socket编程的方式有哪些?
  -BSD Socket
  BSD Socket 是UNIX系统中通用的网络接口,它不仅支持各种不同的网络类型,而且也是一种内部进程之间的通信机制。而iOS系统其实本质就是UNIX,所以可以用,但是比较复杂。
  -CFSocket
  CFSocket是苹果提供给我们的使用Socket的方式,但是用起来还是会不太顺手。当然想使用的话,可以细细研究一下。
  -AsyncSocket
  这次博客的主讲内容,也是我们在开发项目中经常会用到的。
  2)为什么选择AsyncSocket?
  iphone的CFNetwork编程比较艰深。使用AsyncSocket开源库来开发相对较简单,帮助我们封装了很多东西。
  三、AsyncSocket详解
  1??说明
  在我们开发当中,我们主要的任务是开发客户端。所以详解里主要将客户端的整个连接建立过程,以及在说明时候回调哪些函数。在后面的示例代码中,也会给出服务器端的简单开发。
  2??过程详解
  1.建立连接
  - (int)connectServer:(NSString *)hostIP port:(int)hostPort
  2.连接成功后,会回调的函数
  - (void)onSocket:(AsyncSocket *)sock didConnectToHost:(NSString *)host port:(UInt16)port
  3.发送数据
  - (void)writeData:(NSData *)data withTimeout:(NSTimeInterval)timeout tag:(long)tag;
  4.接受数据
  -(void)onSocket:(AsyncSocket *)sock didReadData:(NSData *)data withTag:(long)tag
  5.断开连接
  - (void)onSocket:(AsyncSocket *)sock willDisconnectWithError:(NSError *)err
  - (void)onSocketDidDisconnect:(AsyncSocket *)sock
  主要就是上述的几个方法,只是说在真正开发当中,很可能我们在收发数据的时候,我们收发的数据并不仅仅是一个字符串包装成NSData即可,我们很可能会发送结构体等类型,这个时候我们就需要和服务器端的人员协作来开发:定义怎样的结构体。

posted on 2014-08-04 09:55 顺其自然EVO 阅读(3759) 评论(0)  编辑  收藏


只有注册用户登录后才能发表评论。


网站导航:
 
<2014年8月>
272829303112
3456789
10111213141516
17181920212223
24252627282930
31123456

导航

统计

常用链接

留言簿(55)

随笔分类

随笔档案

文章分类

文章档案

搜索

最新评论

阅读排行榜

评论排行榜