最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網(wǎng) 會員登陸 & 注冊

對Socket、UDP和TCP相關(guān)內(nèi)容的學(xué)習(xí)筆記(一)

2022-04-15 01:22 作者:Zerous  | 我要投稿

參加比賽沒表現(xiàn)好,被批了一頓。擺爛了很久,都不好意思寫技術(shù)博客了?,F(xiàn)在感覺,反正開擺了就做點(diǎn)想做的事吧,顧慮那么多干啥,矛盾。于是又來臭不要臉地寫博客了。

說回博客主題,說實(shí)話我對這方面的東西也不是很懂。學(xué)校計(jì)網(wǎng)講得也不是很清楚,主要是面向考試。所以這篇東拼西湊湊出來的筆記很可能是有問題的,歡迎各位讀者大大指出。

Socket是什么?

很簡單,查字典就知道了。是插座!啊不對,是套接字!

曾經(jīng)在知乎看到Invalid?s佬在一篇關(guān)于API設(shè)計(jì)的回答里提到過Socket的設(shè)計(jì)思路。

按他的描述來看,Socket?API把對客戶端的Socket抽象成了“網(wǎng)線插頭”,把底層協(xié)議抽象成了“虛擬網(wǎng)線”:

通過connect函數(shù)來把插頭插到對應(yīng)的插座。期間可以通過read或write來發(fā)送或者接收消息。最后調(diào)用close函數(shù)拔掉插頭。

而對服務(wù)端的Socket則是抽象成了“網(wǎng)線插座”:用bind來定好插座,然后listen來處理連接請求。然后accept連接請求來建立一個(gè)專線。

感覺講得挺好我就在這照搬了。就像把OpenGL理解成一個(gè)排滿開關(guān)然后留有幾個(gè)插件接口的巨大機(jī)器;把Mentle-like API理解成拼裝一個(gè)制作圖片的流水線一樣。感覺學(xué)習(xí)這種東西的時(shí)候,在腦子里類比/模擬出來一個(gè)模型更能加深理解。

最后補(bǔ)充一下私貨。我認(rèn)為Socket和OpenGL、DX等一眾圖形API是類似的,是一種約定(也許應(yīng)該叫協(xié)議?)。各個(gè)廠商心照不宣做出來的一個(gè)網(wǎng)絡(luò)接口,雖然看起來差不多但總在一些小細(xì)節(jié)上會有點(diǎn)點(diǎn)區(qū)別的感覺。

端口又是什么?

我在開始打算寫這個(gè)文章之前,我甚至都沒產(chǎn)生過這樣的疑問。在之前我一直以為一個(gè)Socket連接對應(yīng)的就是一個(gè)端口。重新思考TCP之后才意識到可能端口和Socket并不是一一對應(yīng)的。

在查找資料時(shí),看到資料中的描述是:一個(gè)指定的端口號不能被多個(gè)應(yīng)用程序共用。那么在一個(gè)應(yīng)用程序里面就可以共用一個(gè)端口號嗎?TCP應(yīng)該是可以的。TCP和UDP兩個(gè)不同的傳輸層協(xié)議是否可以共用一個(gè)端口號呢?

為此,我編寫了程序做了點(diǎn)比較糙的實(shí)驗(yàn)。得到了一些結(jié)論。(Rust源碼放在文末)

  1. 使用TCP和UDP兩個(gè)不同協(xié)議的Socket是可以共用端口的。

  2. 使用UDP協(xié)議的Socket可以自己給自己發(fā)消息。

那么就先到這吧,以后隨緣更新。

源碼

結(jié)論1的源碼

輸出結(jié)果

結(jié)論2的源碼

輸出結(jié)果


對Socket、UDP和TCP相關(guān)內(nèi)容的學(xué)習(xí)筆記(一)的評論 (共 條)

分享到微博請遵守國家法律
三门峡市| 玛纳斯县| 和田县| 安乡县| 东阿县| 金堂县| 西林县| 永定县| 高台县| 仁化县| 洛南县| 大厂| 永新县| 无棣县| 永昌县| 福清市| 噶尔县| 南川市| 教育| 徐水县| 南乐县| 临西县| 特克斯县| 喀喇| 黄石市| 邢台县| 稷山县| 永德县| 新龙县| 酉阳| 历史| 汾西县| 双牌县| 禄劝| 长海县| 黄骅市| 涪陵区| 英山县| 宜春市| 顺昌县| 汤原县|