@
pysama 我是渣渣,我来尝试给你解释一下哈,如果不正确,请大家平和指正哈。
Socket 为什么叫套接字?不晓得…很神奇……
其实它本身的英文解释是“插座,插口”,我们通过四元祖<source ip, source port, destination ip, destination port>来定义了一个“管道”,通过这个“管道”你可以读写数据,这个“管道”可以是 TCP 的一个连接,也可以是 UDP 的 ??…(这个地方不知道应该如何表达和 TCP 连接对应的玩意儿)。通过这个“管道”,我们就可以唯一的和远程主机上面的一个进程通信啦。
想象我们平时操作一个真正的水管的时候都是在它的两端进行操作的,假如这个水管在墙上给你留个口,让你往里面倒水,那么这个口就可以理解为一个 socket (插口),假如我们需要同时给好几个目的地(指代远程主机上的不同的进程),我们就需要有几个插口,想给水供水就哪个插口倒。
Socket 封装了底层通信的细节,使得你有这个玩意儿了,你就知道我可以和远程主机通信啦,不需要管下面怎么实现的。就像是你往水管倒水,你不需要管这个水为了达到远端是不是要经过加压呀,还是经过了什么滤芯什么的,你所做的只需要往这里面倒就行了。
同样,作为接收端,你想要水,就打开这边的插口(可能上面你放了一个水龙头,哈哈)即可,你也不需要管水怎么来的。
不知道这样的解释怎么样?