iOS中基于Socket的 C/S 结构网络通信(上)
来源:互联网 发布:淘宝网机票查询 编辑:程序博客网 时间:2024/05/22 12:58
1、Socket概念
Socket 是网络上的两个程序,通过一个双向的通信连接,实现数据的交换。这个双向的链路的一端称为一个socket。socket通常用来实现客户端和服务端的连接。Socket 是 TCP/IP 协议的一个流行的接口,一个 Socket由一个 IP 地址和一个端口号唯一确定。
Socket 编程是一种底层的网络编程,因为它涉及到很多底层的数据流操作;也比较复杂,需要了解很多网络中的概念,包括他们的细节,例如 TCP/IP 协议等。开发的时候直接使用 C 语言编写比较麻烦。但是底层的网络编程并不代表它功能不强大,恰恰相反,正因为层次低,Socket 编程与基于 Web service 高层次网络编程相比,能够提供更强大的功能和更灵活的控制,但是要复杂很多。
Socket 采用 TCP/IP 协议模型。TCP/IP 协议的传输层又有两种传输协议:TCP(传输控制协议)和 UDP(用户数据报协议)。TCP 是基于连接的,而 UDP 是无连接的;TCP 对系统资源的要求比较多,因为它是一直在等待客户端的数据操作响应,而 UDP 少;TCP 保证数据正确性而 UDP 可能丢包;TCP 保证数据顺序而 UDP 不能保证。
2、Socket 编程
使用 Socket 进行 C/S 结构编程,连接过程如图所示:
服务器监听某个端口是否有连接请求。服务器端程序处于堵塞状态,直到客户端向服务器发出连接请求,服务器端接收请求程序才能向下运行。一旦连接建立起来,通过 Socket 可以获得输入输出流对象。借助于输入输出流对象就可以实现与客户端的通信,最后需要关闭 Socket 和释放一些资源,包括关闭输入/输出流。
客户端流程是先指定要通信的服务器 IP 地址、端口和采用的传输协议(TCP或UDP),向服务器发送连接请求,服务器有应答请求之后,就会建立连接。之后与服务器端是一样的。
在iOS中,客户端 Socket 编程有三种技术:
(1)使用NSStream——面向objective-c语言实现的,由苹果提供的Foundation框架的API;
(2)使用CFStream——面向C语言的实现,由苹果提供的Core Foundation框架的API;
(3) 使用BSD Socket——也叫博客里套接字(Berkeley Socket),是UNIX平台下广泛使用的socket编程。它是面向C语言实现的,完全使用C编写,但是比较麻烦。
在iOS中,服务器端 Socket 编程有两种技术:
(1)使用CFStream——面向C语言的实现,由苹果提供的Core Foundation框架的API;
(2)使用BSD Socket——也叫博客里套接字(Berkeley Socket),是UNIX平台下广泛使用的socket编程。它是面向C语言实现的,完全使用C编写,但是比较麻烦。
未完待续......
- iOS中基于Socket的 C/S 结构网络通信(上)
- iOS中基于 Socket 的 C/S 结构网络通信(中)
- iOS 中基于Socket 的 C/S 结构的网络通信(下)
- Android中基于Socket的网络通信
- Android中基于Socket的网络通信
- 基于socket通信的c/s模式开发
- java网络编程之一对一的socket C/S通信
- c++ Windows Socket实现最简单的C/S网络通信(TCP)
- IOS上的socket通信
- iOS上的socket通信
- IOS上的socket通信
- IOS上的socket通信
- IOS上的socket通信
- IOS上的socket通信
- iOS上的socket通信
- iOS上的socket通信
- iOS上的socket通信
- IOS上的socket通信
- vim 插件
- HDU - 5050 Divided Land
- Spring依赖注入
- DSP6000的上电及供电
- Eclipse相关使用方法
- iOS中基于Socket的 C/S 结构网络通信(上)
- 数据结构——邻接矩阵的最小生成树Prim算法
- HDU - 5047 Sawtooth
- DSP6000的几个简单优化技巧
- java反射与动态代理
- php通过MongoClient连接mongodb时报Cannot assign requested address异常的查询解决经过
- 数字信号处理的学习资源
- poj 1036 Gangsters (简单dp)
- 北大"小师妹"走红 网友赞许预备役校花