什么是Socket
socket的英文原義是“孔”或“插座”,在這里作為4BDS UNIX的進(jìn)程通信機(jī)制,取后一種意義。socket非常類似于電話插座。以一個(gè)國家級電話網(wǎng)為例。電話的通話雙方相當(dāng)于相互通信的2個(gè)進(jìn)程,區(qū)號是它的 網(wǎng)絡(luò)地址;區(qū)內(nèi)一個(gè)單位的交換機(jī)相當(dāng)于一臺(tái)主機(jī),主機(jī)分配給每個(gè)用戶的局內(nèi)號碼相當(dāng)于socket號。任何用戶在通話之前,首先要占有一部電話機(jī),相當(dāng)于 申請一個(gè)socket;同時(shí)要知道對方的號碼,相當(dāng)于對方有一個(gè)固定的socket。然后向?qū)Ψ綋芴柡艚校喈?dāng)于發(fā)出連接請求(假如對方不在同一區(qū)內(nèi),還 要撥對方區(qū)號,相當(dāng)于給出網(wǎng)絡(luò)地址)。對方假如在場并空閑(相當(dāng)于通信的另一主機(jī)開機(jī)且可以接受連接請求),拿起電話話筒,雙方就可以正式通話,相當(dāng)于連 接成功。雙方通話的過程,是一方向電話機(jī)發(fā)出信號和對方從電話機(jī)接收信號的過程,相當(dāng)于向socket發(fā)送數(shù)據(jù)和從socket接收數(shù)據(jù)。通話結(jié)束后,一 方掛起電話機(jī)相當(dāng)于關(guān)閉socket,撤消連接。在電話系統(tǒng)中,一般用戶只能感受到本地電話機(jī)和對方電話號碼的存在,建立通話的過程,話音傳輸?shù)倪^程以及整個(gè)電話系統(tǒng)的技術(shù)細(xì)節(jié)對他都是透明的,這也與 socket機(jī)制非常相似。socket利用網(wǎng)間網(wǎng)通信設(shè)施實(shí)現(xiàn)進(jìn)程通信,但它對通信設(shè)施的細(xì)節(jié)毫不關(guān)心,只要通信設(shè)施能提供足夠的通信能力,它就滿足了。