iOS中的套接字(第一部分)
来源:互联网 发布:淘宝买相机可靠吗 编辑:程序博客网 时间:2024/05/03 00:37
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中的套接字(第一部分)
- iOS中的storyboard使用 (第一部分)
- UNIX网络编程卷1:套接字联网API-第一部分:简介
- UNIX网络编程卷1:套接字联网API-第一部分:下载unpv13e编译运行
- 进程之间的通信--套接字(网络部分)
- c#中的套接字编程(一)
- c#中的套接字编程(二)
- Java中的套接字
- iOS中的动画解决方案(部分转载)
- Spring Framework中的面向方面编程(AOP),第一部分
- 简单socket套接字编程,第一试
- 第一部分(2)
- 第一部分(3)
- 第一部分(4)
- 第一部分(5)
- ios Socket套接字编程
- iOS socket 套接字编程
- JAVA套接字(Socket)101七天系列—第七天【现实生活中的套接字】
- HDU 2544 (举例对dijkstra算法的简单讲解)
- 第7周项目1电阻串联
- socket.io v1.10 注意
- 第七周项目一电阻串联
- C#-—体验结构
- iOS中的套接字(第一部分)
- iOS 5.0 后UIViewController新增:willMoveToParentViewController和didMoveToParentViewCon
- VC MFC工具栏(CToolBar)控件
- kibana显示elasticsearch集群中flume到入的日志
- 移动互联网时代的9大赚钱机会
- 正则表达式HTML版工具
- 递归函数的认识
- Light OJ 1341 Aladdin and the Flying Carpet Pollard_rho整数分解+DFS
- 使用Jedis操作redis