Socket

TCP/IP(Transmission Control Protocol/Internet Protocol)即传输控制协议/网间协议,它是为连接广域网,又称广域网、外网、公网,WAN设计的。

 

 

 上图代表了这些协议的关系。

TCP/IP协议族包括了运输层,网络层,传输层。

而Socket是对TCP/IP协议族封装的一层抽象接口。

 

 

 所以Socket是应用层和TCP/IP协议族通信的一组接口。采用了门面模式。门面模式就是有一个前台处理复杂的业务请求,然后由前台将这些请求无误的转送到后台复杂的业务系统中,减少了复杂的沟通步骤。

简单来说,Socket设计的初衷就是为了简化广域网通信的编程方法,通过一个公共的门面,让程序员可以快速构建自己的网络服务。

------------

Socket通信的大致流程:

  服务器端先初始化Socket,然后与端口绑定(bind),对端口进行监听(listen),调用accept阻塞,等待客户端连接。在这时如果有个客户端初始化一个Socket,然后连接服务器(connect),如果连接成功,这时客户端与服务器端的连接就建立了。客户端发送数据请求,服务器端接收请求并处理请求,然后把回应数据发送给客户端,客户端读取数据,最后关闭连接,一次交互结束。

------------

通信就是一个信息请求着向一个信息提供者请求信息,前提是这两个人需要知道彼此的位置以及沟通的语言。

TCP/IP协议族是通过ip+协议+端口这种三元组的方式来解决这个问题的。ip+端口是位置,协议是语言。

针对TCP/IP协议族开发的编程接口有两种,分别是UNIX BSD的套接字(socket)和UNIX System V的TLI(已经被淘汰)。

Socket一词起源于Unix,所以只然也可以将其理解为文件,文件就都可以用“打开open –> 读写write/read –> 关闭close”模式来操作。

Socket打开:

 

 构建Socket,如上图。

 

 如果有特殊的要求可以采用有参构造,参数介绍的很清晰,比如第二个参数是设置最大排队数,如果队列已满,则新的客户端请求会被拒绝。

 

posted @ 2021-02-08 23:24  永不熄灭的火  阅读(367)  评论(0编辑  收藏  举报