技术计算机技术一锅炖iOS Developer

#Socket回顾学习笔记

2016-07-31  本文已影响244人  践行者

Socket学习笔记

Socket基础知识

背景
  应用层通过传输层进行数据通信时,TCP会遇到同时为多个应用程序进程提供并发服务的问题。多个TCP连接或多个应用程序进程可能需要通过同一个 TCP协议端口传输数据。为了区别不同的应用程序进程和连接,许多计算机操作系统为应用程序与TCP/IP协议交互提供了套接字(Socket)接口。应用层可以和传输层通过Socket接口,区分来自不同应用程序进程或网络连接的通信,实现数据传输的并发服务。
Socket概念
socketLocation.jpg

Socket支持的协议

Socket可以支持不同的传输层协议(TCP或UDP),具体采用哪种协议,有业务场景来决定;

TCP

TCP是面向连接的、传输可靠(保证数据正确性且保证数据顺序)、用于传输大量数据(流模式)、速度慢,建立连接需要开销较多(时间,系统资源)。

TCP是一种流模式的协议,是面向连接的,也就是说,在连接持续的过程中,socket中收到的数据都是由同一台主机发出的(劫持什么的不考虑),因此,知道保证数据是有序的到达就行了,至于每次读取多少数据不关心。

tcp.jpg
UDP

UDP是面向无连接、传输不可靠、用于传输少量数据(数据包模式)、速度快的传输层协议。注意,UDP传输的是数据报包,而TCP是流。

UDP是面向无连接的协议,只要知道接收端的IP和端口,且网络是可达的,任何主机都可以向接收端发送数据。这时候,如果一次能读取超过一个报文的数据,则会乱套。比如,主机A向发送了报文P1,主机B发送了报文P2,如果能够读取超过一个报文的数据,那么就会将P1和P2的数据合并在了一起,这样的数据是没有意义的。

udp.jpg
关于UDP 广播 多播概念可以移步这里http://www.jianshu.com/p/41c2a53d719b

Socket连接基本步骤

建立Socket连接至少需要一对套接字,其中一个运行于客户端,称为ClientSocket; 另一个运行于服务器端,称为ServerSocket。

socket通信过程如下:
套接字之间的连接过程分为三个步骤:

iOS端Socket编程

既可以C语言 也可以 OC语言实现,
目前第三方库中比较好的是 CocoaAsyncSocket。

参考学习文章

1.Soket 理论知识http://www.jianshu.com/p/06f8b9111a56

上一篇 下一篇

猜你喜欢

热点阅读