Socket,俗称网络套接字,本身并不是协议,而是一个调用接口,是对TCP/IP协议的封装和应用,。提供了一系列方法方便开发者进行网络通讯。
TCP/IP协议是使用最早的通讯协议,它是传输层协议,主要解决数据如何在网络中传输。
Socket中又分为流模式与数据报模式,即TCP与UDP两种方式。
TCP : Transmission Control Protocol,传输控制协议,是面向连接的协议,也就是说,在收发数据前,必须和对方建立可靠的连接。一个TCP连接必须要经过三次“对话”才能建立起来,其中的过程非常复杂,但也是最安全的。
UDP : User Data Protocol,用户数据报协议。传输数据之前源端和终端不建立连接,发送端直接把数据发送到网络,接收端把消息段放在队列中,应用程序每次从队列中读一个消息段。
Socket基础和通信流程:
Socket几个定义:
1)IP地址:即依照TCP/IP协议分配给本地主机的网络地址,两个进程要通讯,任一进程首先要知道通讯对方的位置,即对方的IP。
(2)端口号:用来辨别本地通讯进程,一个本地的进程在通讯时均会占用一个端口号,不同的进程端口号不同,因此在通讯前必须要分配一个没有被访问的端口号。
(3)连接:指两个进程间的通讯链路。
客户/服务器模式:
在TCP/IP网络应用中,通信的两个进程间相互作用的主要模式是客户/服务器(Client/Server, C/S)模式,即客户向服务器发出服务请求,服务器接收到请求后,提供相应的服务。
Socket通信流程:
服务端:
1、服务器端先初始化Socket
2、当一个套接字用socket()创建后,存在一个名字空间(地址族),但它没有被命名。bind()将套接字地址(包括本地主机地址和本地端口地址)与所创建的套接字号联系起来,即将名字赋予套接字,以指定本地半相关
3、对端口进行监听(listen)
4、调用accept阻塞,等待客户端连接。
客户端:
1、客户端初始化一个Socket
2、然后连接服务器(connect)
3、如果连接成功,这时客户端与服务器端的连接就建立了。
4、客户端发送数据请求&