套接字这个概念估计会烦恼菜鸟不久,这里我说一下我今天对于套接字这个概念的一个领悟。
首先,来看看维基百科里面对于Socket的解释:
“柏克莱套接字(英语:Berkeley sockets) ,又称为BSD 套接字(BSD sockets)是一种应用程序接口(API),用于网际插座(Internet socket)与Unix域套接字,包括了一个用C语言写成的应用程序开发库,主要用于实现进程间通讯。”
其实很多人都会觉得套接字这个中文翻译有点那个,网搜一下也能找到套接字这种翻译的一些来源。“Socket”英文直译是插头、插座的意思。所以我的理解就是,拿我们平常见的室内电线做个比喻,网络就好比这些电线,而电线的两端需要有插座来供用户使用,然后用户再将自己的设备插入这个插座,进行充电或者啥的。这里的插座就是Socket,而TCP服务和应用层服务就类似于将设备插入插座的过程,有了插座我们才能把自己的手机或者自己的台灯接入获得电源从而工作。生活中我们也会遇到插座不够用的时候,所以这里的Socket也不能只有一个,因为一般说来,一个插座只能给你插入一个设备,所以我们就需要多个Socket,而这些Socket是通过终端地址(Address)和端口号(Port)来唯一确定的,也就是套接字编程里面的“绑定”--bind的过程。
另外这里有一篇博客介绍Socket也是挺全面的: