一、Socket
Socket就是为网络服务提供的一种机制。网络通信其实就是Socket间的通信,通信的两端都是Socket,数据在两个Socket间通过IO传输。
在Web服务大行其道的今天,调用Web服务的代价是高昂的,尤其是仅仅是抓取少量数据的时候尤其如此。而使用Socket,可以只传送数据本身而不用进行XML封装,大大降低数据传输的开销。Socket允许使用长连接,允许应用程序运行在异步模式(提高效率),只有在需要的时候才接收数据
iOS中常用的两种Socket类型:
流式Socket(SOCK_STREAM):流式是一种面向连接的Socket,针对于面向连接的TCP服务应用
数据报式Socket(SOCK_DGRAM):数据报式Socket是一种无连接的Socket,对应于无连接的UDP服务应用
在iOS中使用流式Socket连接的方法:
以NSStream(流)的方式来发送和接收数据
设置流的代理,对流状态的变化做出相应
a. 连接建立
b. 接收到数据
c. 连接关闭
其中:
1. NSStream:数据流的父类,用于定义抽象特性,例如:打开、关闭代理,继承自CFStream(Core Foundation)
2. NSInputStream:NSStream的子类,用于读取输入
3. NSOutputStream:NSSTream的子类,用于写输出