在網(wǎng)絡(luò)編程領(lǐng)域(注意不是Web編程),幾乎每天都與socket打交道。然而不知如何,國(guó)人竟把socket翻譯成了“套接字”。socket的原意是指電源插座,而“套接字”為何物?
雖然這種翻譯已經(jīng)被絕大多數(shù)國(guó)人認(rèn)可,可這也恰恰給網(wǎng)絡(luò)編程的入門(mén)及其本質(zhì)的理解造成了難以理解的巨大惡果。還是先讓我們來(lái)看看插座吧。
對(duì)于電源插座,相信大家都不會(huì)陌生了。看看下面這個(gè)再簡(jiǎn)單不過(guò)的生活經(jīng)歷:
小王裝修房子,第一天,為了用電,必須找一根電纜從變電站把電引入家中。也就是家里用電的總來(lái)源要有啊。
第二天,小王買來(lái)了電冰箱,為了給電冰箱供電,必須先買一個(gè)插座,并把插座接到第一天引入的電源線上。剩下來(lái)就簡(jiǎn)單了,因?yàn)橛辛瞬遄?socket),把冰箱的電源插頭插入就OK了。
第三天,熱愛(ài)計(jì)算機(jī)的小王買來(lái)了心愛(ài)的電腦,可這下就犯愁了,怎么供電呢?好辦,又買了一個(gè)插座(socket)并接到電源線上,把電腦的插頭插入socket,電腦終于可以正常使用了。
第四天,小王又買來(lái)了電視機(jī),同樣一個(gè)socket,又讓電視機(jī)順利地工作了。
第五天,第六天...按照同樣的方法,小王通過(guò)一個(gè)又一個(gè)的插座(socket),完成了所有電器的供電。
看完了這個(gè)例子,再想想網(wǎng)絡(luò)編程,簡(jiǎn)直是如出一轍。
為了連上網(wǎng)絡(luò),必須要有網(wǎng)卡(總電源),這樣網(wǎng)絡(luò)上的數(shù)據(jù)便可以到達(dá)你的計(jì)算機(jī)了。可是你的應(yīng)用程序如何取得這些網(wǎng)絡(luò)數(shù)據(jù)呢,很簡(jiǎn)單,建立一個(gè)socket,并連到網(wǎng)卡上,好了這下你就可以從插座里取得信息了。無(wú)論何時(shí)你想取得網(wǎng)絡(luò)數(shù)據(jù)只需連接一個(gè)socket即可。
看看,socket這個(gè)詞,用到網(wǎng)絡(luò)編程API上是何等的形象!足見(jiàn)創(chuàng)始人對(duì)網(wǎng)絡(luò)編程模型的準(zhǔn)確把握和良苦用心。然而我們的翻譯者卻把這么好的一個(gè)術(shù)語(yǔ)弄成了“套接字”,本來(lái)很簡(jiǎn)單直觀的網(wǎng)絡(luò)編程被蒙上了一層復(fù)雜深?yuàn)W的迷霧。
注意:當(dāng)然網(wǎng)絡(luò)編程中的Socket與電源插座有一定的差別,網(wǎng)絡(luò)中的socket種類和功能更多更強(qiáng),但是其本質(zhì)是一樣的。按照插座來(lái)理解網(wǎng)絡(luò)編程,將非常的自然清晰。