初識(shí)socket

首先聲明哦,
它和websocket完全是兩個(gè)概念。websocket是一個(gè)全雙工通訊協(xié)議。而socket是作為進(jìn)程通訊機(jī)制而存在的,通常也稱作"套接字",用于描述IP地址和端口,是一個(gè)通信鏈的句柄,可以用來實(shí)現(xiàn)不同虛擬機(jī)或不同計(jì)算機(jī)之間的通信。

下面這段文字摘抄自segmentfault中的一個(gè)答案(我覺得還挺通俗易懂的):

socket 在操作系統(tǒng)里面是一個(gè)文件描述符, 和普通的文件的文件描述符一樣,可以通過系統(tǒng)調(diào)用 read(), write()進(jìn)行讀取和寫入數(shù)據(jù).
每一個(gè)socket 其實(shí)有幾個(gè)重要的參數(shù), 本機(jī)ip,本機(jī)port,對(duì)端ip,對(duì)端port,以及協(xié)議等, 這幾個(gè)通常要是unique的, 操作系統(tǒng)才不會(huì)把socket 和 socket 之間搞混.
服務(wù)器端的程序,一般會(huì)把socket 和某一個(gè)ip,port 端口bind 起來, 這樣構(gòu)成了一個(gè)特殊的socket, 這個(gè)socket 沒有對(duì)端ip和對(duì)端port, 只有本機(jī)ip和本機(jī)port.
你可以把這個(gè)socket 看成是一個(gè)特殊的文件(好比登記表), 當(dāng)有新的連接進(jìn)來的時(shí)候, 都可以通過 accept 系統(tǒng)調(diào)用讓操作系統(tǒng)接受一個(gè)新的連接, 同時(shí)返回一個(gè)新的socket, 這個(gè)socket 是綁定在(本機(jī)ip,本機(jī)port,對(duì)端ip,對(duì)端port) 這個(gè)上面的, 也就是對(duì)應(yīng)了一個(gè)unique的連接.
然后你可以拿著這個(gè)新產(chǎn)生的socket 進(jìn)行寫入和讀取等操作(因?yàn)樗且粋€(gè)文件描述符). 那個(gè)用來listen的socket 和這個(gè)新的socket 是不相關(guān)的,在操作系統(tǒng)內(nèi)部也是分開的,會(huì)有各自的緩沖區(qū)等.

待讀文章

  1. 簡(jiǎn)單理解Socket
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理,服務(wù)發(fā)現(xiàn),斷路器,智...
    卡卡羅2017閱讀 136,568評(píng)論 19 139
  • 每當(dāng)想寫文章就想百度一下,百度之后發(fā)現(xiàn)socket比預(yù)想的要復(fù)雜。 socket定義:中文名套接字,網(wǎng)絡(luò)上的兩個(gè)程...
    閑成灰閱讀 277評(píng)論 0 0
  • 簡(jiǎn)介 用簡(jiǎn)單的話來定義tcpdump,就是:dump the traffic on a network,根據(jù)使用者...
    保川閱讀 6,079評(píng)論 1 13
  • 原文地址:http://www.cnblogs.com/skynet/archive/2010/12/12/190...
    archyly閱讀 1,125評(píng)論 0 8
  • 到了5~6歲敏感期的分析,發(fā)現(xiàn)對(duì)這一敏感期出現(xiàn)的現(xiàn)象沒有特別大的感觸,雖然接觸了非常多這個(gè)年齡的孩子,但具體的這些...
    CiciChenChen閱讀 374評(píng)論 0 0

友情鏈接更多精彩內(nèi)容