溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

如何解析C# Socket編程實(shí)現(xiàn)訪問(wèn)網(wǎng)絡(luò)的原理

發(fā)布時(shí)間:2021-11-24 09:17:43 來(lái)源:億速云 閱讀:167 作者:柒染 欄目:編程語(yǔ)言

這期內(nèi)容當(dāng)中小編將會(huì)給大家?guī)?lái)有關(guān)如何解析C# Socket編程實(shí)現(xiàn)訪問(wèn)網(wǎng)絡(luò)的原理,文章內(nèi)容豐富且以專業(yè)的角度為大家分析和敘述,閱讀完這篇文章希望大家可以有所收獲。

在C# Socket編程學(xué)習(xí)中,我們知道MS為我們提供了System.Net.Sockets命名空間,里面包含了Socket類。那么C# Socket是如何實(shí)現(xiàn)對(duì)網(wǎng)絡(luò)的訪問(wèn)呢?讓我們來(lái)看看基本的原理。

C# Socket編程1.C# Socket的概念解釋

Windows中的很多東西都是從Unix領(lǐng)域借鑒過(guò)來(lái)的,Socket也是一樣。在Unix中,socket代表了一種文件描述符(在Unix中一切都是以文件為單位),而這里這個(gè)描述符則是用于描述網(wǎng)絡(luò)訪問(wèn)的。什么意思呢?就是程序員可以通過(guò)socket來(lái)發(fā)送和接收網(wǎng)絡(luò)上的數(shù)據(jù)。你也可以理解成是一個(gè)API。有了它,你就不用直接去操作網(wǎng)卡了,而是通過(guò)這個(gè)接口,這樣就省了很多復(fù)雜的操作。

C# Socket編程2.C# Socket訪問(wèn)網(wǎng)絡(luò):

C# Socket訪問(wèn)網(wǎng)絡(luò)需要的條件(與編程有關(guān)的部分):a. 要確定本機(jī)的IP和端口,socket只有與某一IP和端口綁定,才能發(fā)揮強(qiáng)大的威力。b. 得有協(xié)議吧(否則誰(shuí)認(rèn)得你這發(fā)送到網(wǎng)絡(luò)的是什么呀)。想要復(fù)雜的,我們可以自己來(lái)定協(xié)議。但是這個(gè)就不在這篇里提了,我這里介紹兩種大家最熟悉不過(guò)的協(xié)議:TCP & UDP。(別說(shuō)你不知道,不然...不然...我不告訴你)

如果具備了基本的條件,就可以開(kāi)始用它們?cè)L問(wèn)網(wǎng)絡(luò)了。來(lái)看看步驟吧:

a. 建立一個(gè)套接字

b. 綁定本機(jī)的IP和端口

c. 如果是TCP,因?yàn)槭敲嫦蜻B接的,所以要利用ListenO()方法來(lái)監(jiān)聽(tīng)網(wǎng)絡(luò)上是否有人給自己發(fā)東西;如果是UDP,因?yàn)槭菬o(wú)連接的,所以來(lái)者不拒。

d. TCP情況下,如果監(jiān)聽(tīng)到一個(gè)連接,就可以使用accept來(lái)接收這個(gè)連接,然后就可以利用Send/Receive來(lái)執(zhí)行操作了。而UDP,則不需要accept, 直接使用SendTo/ReceiveFrom來(lái)執(zhí)行操作。(看清楚哦,和TCP的執(zhí)行方法有區(qū)別,因?yàn)閁DP不需要建立連接,所以在發(fā)送前并不知道對(duì)方的IP和端口,因此需要指定一個(gè)發(fā)送的節(jié)點(diǎn)才能進(jìn)行正常的發(fā)送和接收)

e. 如果你不想繼續(xù)發(fā)送和接收了,就不要浪費(fèi)資源了。能close的就close吧。

如果看了上面文字,你還不清楚的話,就來(lái)看看圖好了:

如何解析C# Socket編程實(shí)現(xiàn)訪問(wèn)網(wǎng)絡(luò)的原理

面向連接的套接字系統(tǒng)調(diào)用時(shí)序

如何解析C# Socket編程實(shí)現(xiàn)訪問(wèn)網(wǎng)絡(luò)的原理

無(wú)連接的套接字系統(tǒng)調(diào)用時(shí)序

上述就是小編為大家分享的如何解析C# Socket編程實(shí)現(xiàn)訪問(wèn)網(wǎng)絡(luò)的原理了,如果剛好有類似的疑惑,不妨參照上述分析進(jìn)行理解。如果想知道更多相關(guān)知識(shí),歡迎關(guān)注億速云行業(yè)資訊頻道。

向AI問(wèn)一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI