Socket编程

一、Socket

1.1 Socket简介

Socket就是为网络服务提供的一种机制。网络通信其实就是Socket间的通信,通信的两端都是Socket,数据在两个Socket间通过IO传输。

Socket编程_第1张图片

在Web服务大行其道的今天,调用Web服务的代价是高昂的,尤其是仅仅是抓取少量数据的时候尤其如此。而使用Socket,可以只传送数据本身而不用进行XML封装,大大降低数据传输的开销。Socket允许使用长连接,允许应用程序运行在异步模式(提高效率),只有在需要的时候才接收数据

1.2 模仿QQ通信流程

Socket编程_第2张图片

1.3 socket通信流程图

Socket编程_第3张图片

1.4 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的子类,用于写输出

你可能感兴趣的:(Socket编程)