浅谈iOS与Socket交互:数据异常处理

欢迎转载!转载时请注明。

 


iOS中Socket的实现方式有很多种,你可以选择使用CFNetwork库API自己敲,当然,如果你想绕过那些繁琐的逻辑控制和异常处理,那么最好的解决方案就是寻找一个稳定、安全、可靠的开源库。

曾经有一个朋友问过我这样一个问题:

你能自己写为什么还要去用别人的?

我的回答是:

全世界几乎所有iOS开发者都能写HTTP请求为什么还在用AF...和ASI...?

其实这个问题很简单,就是愿意装x还是愿意选择效率的区别。就啰嗦到这里,下面进入正题。


开源库:AsyncSocket, 可以在Git中直接搜索下载。

还是先说一下基础:

初始化和连接:

@property(nonatomic,strong)AsyncSocket * mainSocket;

- (AsyncSocket *)mainSocket
{
    if (!_mainSocket)
    {
        _mainSocket = [[AsyncSocket alloc] init];
    }
    return _mainSocket;
}
[self.mainSocket setDelegate:self];

连接到服务器:

BOOL successToConnect = [self.mainSocket connectToHost:host onPort:port error:&error];


当我们请求数据发送后,服务器响应的数据会在代理方法  - (void)onSocket:(AsyncSocket *)sock didReadData:(NSData *)data withTag:(long)tag  中,那么问题来了:

前提:Socket读取的数据(当前通道中可读取的数据)并不一定是发送方所发送的完整数据包,比如发送方发送了一个结构为0xabc的数据,那么读取方在读取的时候受多种因素的限制&#

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值