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编写,但是比较麻烦。


0 0
原创粉丝点击