你大学学过的socket,还记得是什么东西吗?

Posted 给产品经理讲技术

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了你大学学过的socket,还记得是什么东西吗?相关的知识,希望对你有一定的参考价值。


说起大学,果果当年学的是计算机科学与技术,外国人叫CS。说是科学与技术,实际上最后很多人都去搞技术了,专心搞科研的,一个年级也挑不出几个。其实我理解的是,对计算机来说,科学和技术之间界限并不是很清楚。你说那些牛逼的计算机科学家,谁还不会写两句代码?那些吊炸天的程序员,也能形成自己的理论,供后人膜拜。然而这仅限于牛人,对于果果这样的小码农,也就只能在自己的这一亩三分地天天和隔壁的产品经理勾心斗角了。

CS专业有一门课叫计算机网络,学的是一本《英汉词典》那么厚的书,关于网络的一切知识你都能在书上找到。今天要讲的socket,书上也有,可惜我已经完全记不起来当时老师是怎么讲的了。现在轮到我来讲,要想让你们都理解,最起码多年以后看到它还能知道是个什么东西,难度还真不小。

好了废话少说,进入正题。socket是个什么东西呢?它其实什么都不是,就是一套API,封装了TCP/IP协议。好吧,我又把你搞晕了。什么是API,什么又是TCP/IP?这些在果果的文章里都有,你可以翻一下(、)。

简单来讲,TCP/IP是一套协议,规定了互联网上的两台电脑,要按什么样的套路来通信。TCP/IP是整个网络世界的基础,人们利用TCP/IP协议,创造了很多上层的东西,比如HTTP协议,规定了浏览网页是什么套路。再比如在线视频、网络游戏,刨根到底都是TCP/IP那一套。

然而TCP/IP终究只是一套协议,是虚无缥缈的东西,它规定了你要想通信,第一步做什么,第二步做什么,却没有告诉你具体怎么去做。于是socket出现了,它封装了TCP/IP的实现,并提供了一套标准的API供别人调用,真正把TCP/IP落了地。

举个例子。有一本书,书上写着把大象关冰箱,一共需要三步:把冰箱门打开,把大象塞进去,然后把冰箱门关上。这本书叫《大象冷藏协议》,你要想冷藏大象,就得按书上说的做。然而,大家看了这本书,用了各种办法还是没能把大象塞到冰箱里去。于是有人站出来,写了一套程序,实现了《大象冷藏协议》里规定的每一个细节,然后告诉大家,说你们只需要调用我提供的API,就能自动实现把大象装冰箱的功能。于是大家欣然接受,从此以后再也没有人自己去实现《大象冷藏协议》了,直接用现成的API,一头头大象就乖乖的进了冰箱。


说到短连接长连接,socket现在单独拿出来,有一个很大的用途就是做推送。《》这篇文章讲过,推送的时候,需要终端和服务器建立一条长期有效不销毁的连接通道,以便服务器随时可以推送消息。这里用socket最合适了。为什么?一方面是因为socket是长连接,有先天的优势,另一方面,socket可以传输的内容,不仅限于像html那样的文本,它可以传任何东西。

总结一下,socket封装了TCP/IP的实现,提供了一套API供别人调用。它不仅可以用来和别的电脑进行通信,还可以作为进程间通信的一种方式,让两个进程产生联系。不知道你理解了没?


以上是关于你大学学过的socket,还记得是什么东西吗?的主要内容,如果未能解决你的问题,请参考以下文章

JS组件系列——还记得那些年玩过的游戏机吗?(SlotMachine组件简易实现)

记住你学过的 LeetCode 的科学方法

你是否还记得?那些年我们一起追过的(FIDL:Flutter界的AIDL)

杨辉那个三角

如何快速掌握 Linux 操作系统?

hdoj 2032