在网络编程领域(注意不是Web编程),几乎每天都与socket打交道。然而不知如何,国人竟把socket翻译成了“套接字”。socket的原意是指电源插座,而“套接字”为何物?
虽然这种翻译已经被绝大多数国人认可,可这也恰恰给网络编程的入门及其本质的理解造成了难以理解的巨大恶果。还是先让我们来看看插座吧。
对于电源插座,相信大家都不会陌生了。看看下面这个再简单不过的生活经历:
小王装修房子,第一天,为了用电,必须找一根电缆从变电站把电引入家中。也就是家里用电的总来源要有啊。
第二天,小王买来了电冰箱,为了给电冰箱供电,必须先买一个插座,并把插座接到第一天引入的电源线上。剩下来就简单了,因为有了插座(socket),把冰箱的电源插头插入就OK了。
第三天,热爱计算机的小王买来了心爱的电脑,可这下就犯愁了,怎么供电呢?好办,又买了一个插座(socket)并接到电源线上,把电脑的插头插入socket,电脑终于可以正常使用了。
第四天,小王又买来了电视机,同样一个socket,又让电视机顺利地工作了。
第五天,第六天...按照同样的方法,小王通过一个又一个的插座(socket),完成了所有电器的供电。
看完了这个例子,再想想网络编程,简直是如出一辙。
为了连上网络,必须要有网卡(总电源),这样网络上的数据便可以到达你的计算机了。可是你的应用程序如何取得这些网络数据呢,很简单,建立一个socket,并连到网卡上,好了这下你就可以从插座里取得信息了。无论何时你想取得网络数据只需连接一个socket即可。
看看,socket这个词,用到网络编程API上是何等的形象!足见创始人对网络编程模型的准确把握和良苦用心。然而我们的翻译者却把这么好的一个术语弄成了“套接字”,本来很简单直观的网络编程被蒙上了一层复杂深奥的迷雾。
注意:当然网络编程中的Socket与电源插座有一定的差别,网络中的socket种类和功能更多更强,但是其本质是一样的。按照插座来理解网络编程,将非常的自然清晰。