iOS项目开发之Socket编程

    xiaoxiao2022-07-15  142

    有一段时间没有认真总结和写博客了   前段时间找 工作、进入工作阶段。比较少静下来认真总结,现在静下心来总结一下最近的一些心得    前言    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即可,我们很可能会发送结构体等类型,这个时候我们就需要和服务器端的人员协作来开发:定义怎样的结构体。 最新内容请见作者的GitHub页:http://qaseven.github.io/ 相关资源:IOS开发网络篇—Socket编程详解
    最新回复(0)