1.socket编程概念
socket就是插座(中文翻译为套接字),运行在计算机中的两个程序通过socket建立起一个通道,数据在通道中传输。
socket把复杂的TCP/IP协议簇隐藏了起来,对程序员来说,只要用好socket相关函数,就可以完成网络通信。
2.socket分类
socket提供了流(stream)和数据报(datagram)两种通信机制,即流socket 和数据报socket。
流socket基于TCP协议,是一个有序、可靠、双向字节流的通道,传输数据不会丢 失、不会重复、顺序也不会错乱。
数据报socket基于UDP协议,不需要建立和维持连接,可能会丢失或错乱。UDP 不是一个可靠的协议,对数据的长度有限制,但是它的效率比较高。
某些应用层协议, 出于历史原因,受当时技术和网络条件限制,选择了基于UDP实 现,其选择的理由现在很可能已经不再成立了。
实时的音视频聊天可能采用的是UDP,这种业务可以接受数据的丢失且不必重传。
本专题只介绍流socket,数据报socket的应用场景实在太少,以后可能更少。
3.简单的socket通信流程