套接字
一、網(wǎng)絡(luò)中如何進(jìn)行通信?
首要解決的問(wèn)題是如何標(biāo)識(shí)一個(gè)進(jìn)程,否則通信無(wú)從談起。
其實(shí)TCP、IP協(xié)議族已經(jīng)幫我們解決了這個(gè)問(wèn)題,網(wǎng)絡(luò)層的IP地址可以唯一標(biāo)識(shí)網(wǎng)絡(luò)中的主機(jī),傳輸層的“協(xié)議+端口”可以唯一標(biāo)識(shí)主機(jī)中的應(yīng)用程序(進(jìn)行)。
二、套接字
socket(簡(jiǎn)稱套接字)是進(jìn)程間通信的一種方式。它與其他進(jìn)程間通信的一個(gè)主要不同是,它能實(shí)現(xiàn)不同主機(jī)間的進(jìn)程通信,我們網(wǎng)絡(luò)上各種各樣的服務(wù)大多是基于socket來(lái)完成通信的。例如我們每天瀏覽網(wǎng)頁(yè)、qq聊天、收發(fā)email等等。
socket方法有兩個(gè)參數(shù):
① address family:可以選擇
AF_INET
(用于internet進(jìn)程間通信)或者
AF_UNIX
(用于同一臺(tái)機(jī)器進(jìn)程間通信),實(shí)際工作中常用AF_INET;② Type:套接字類型,可以是
SOCK_STREAM
(流式套接字,主要用于TCP協(xié)議)或者
SOCK_DGRAM
(數(shù)據(jù)包套接字,主要用于UDP協(xié)議)
創(chuàng)建套接字:

UDP協(xié)議
一、UDP協(xié)議介紹
UDP----用戶數(shù)據(jù)報(bào)協(xié)議,是一個(gè)無(wú)連接的簡(jiǎn)單地面向數(shù)據(jù)報(bào)的傳輸層協(xié)議。無(wú)連接指的是單方面的,就好比寄信和打電話,寄出去的信件可能在中途丟失,但是打電話不會(huì),建立了連接就可以通話,沒(méi)建立連接無(wú)法傳輸信息。
UDP不提供可靠性,它只是把應(yīng)用程序傳給IP層的數(shù)據(jù)報(bào)發(fā)送出去,但是并不能保證他們能到達(dá)目的地。由于UDP在傳輸數(shù)據(jù)報(bào)前不用在客戶和服務(wù)器之間建立一個(gè)鏈接,且沒(méi)有超時(shí)重發(fā)等機(jī)制,故而傳輸速度很快。
UDP是一種面向無(wú)連接的協(xié)議,每個(gè)數(shù)據(jù)報(bào)都是一個(gè)獨(dú)立的信息,包括完整的源地址或目的地址,它在網(wǎng)絡(luò)上以任何可能的路徑傳往目的地,因此能否到達(dá)目的地,到達(dá)目的地的時(shí)間以及內(nèi)容的正確性都是不能保證的。
特點(diǎn)(了解):UDP是面向無(wú)連接的通訊協(xié)議,UDP數(shù)據(jù)包括目的端口號(hào)和源端口號(hào)信息,由于通訊不需要連接,所以可以實(shí)現(xiàn)廣播發(fā)送。UDP傳輸數(shù)據(jù)時(shí)有大小限制,每個(gè)被傳輸?shù)臄?shù)據(jù)報(bào)必須限定在64KB之內(nèi)。UDP是一個(gè)不可靠的協(xié)議,發(fā)送方所發(fā)送的數(shù)據(jù)報(bào)并不一定以相同的次序到達(dá)接收方。
適用情況:
UDP是面向消息的協(xié)議,通信時(shí)不需要建立連接,數(shù)據(jù)的傳輸自然是不可靠的,UDP一般用于多點(diǎn)通信和實(shí)時(shí)的數(shù)據(jù)業(yè)務(wù),比如:
語(yǔ)音廣播
視頻
TFTP(簡(jiǎn)單文件傳送)
SNMP(簡(jiǎn)單網(wǎng)絡(luò)管理協(xié)議)
RIP(路由信息協(xié)議,如報(bào)告股票市場(chǎng),航空信息)
DNS(域名解析)
注重速度流暢udp操作簡(jiǎn)單,而且僅需要較少的監(jiān)護(hù),因此通常用于局域網(wǎng)高可靠性的分散系統(tǒng)中clientserver應(yīng)用程序。例如視頻會(huì)議系統(tǒng),并不要求音頻視頻數(shù)據(jù)絕對(duì)的正確,只要保證連貫性就可以了,這種情況下顯然使用UDP會(huì)更合理一些。
二、網(wǎng)絡(luò)調(diào)試助手
接下來(lái)我們需要借助網(wǎng)絡(luò)測(cè)試小助手來(lái)完成套接字的創(chuàng)建使用過(guò)程:

三、示例
udp網(wǎng)絡(luò)程序-發(fā)送數(shù)據(jù):①創(chuàng)建套接字;②發(fā)送、接收數(shù)據(jù);③關(guān)閉套接字。

我們點(diǎn)擊運(yùn)行程序之后,先不要輸入信息,打開(kāi)網(wǎng)絡(luò)調(diào)試助手,進(jìn)行連接。

輸入你好!我們就可以在網(wǎng)絡(luò)測(cè)試助手上收到消息。


這次在網(wǎng)絡(luò)測(cè)試助手上發(fā)送消息:你是GG還是MM?



這是兩次print不同的表達(dá)結(jié)果。

其實(shí),使用from socket import *會(huì)在創(chuàng)建套接字的時(shí)候使代碼顯得更加簡(jiǎn)潔凝練,因?yàn)樗鼘?dǎo)入了所有功能。

四、UDP網(wǎng)絡(luò)通信過(guò)程

和快遞原理是差不多的。
審核編輯:劉清
-
Socket
+關(guān)注
關(guān)注
1文章
214瀏覽量
36912 -
SNMP
+關(guān)注
關(guān)注
0文章
120瀏覽量
30675 -
UDP協(xié)議
+關(guān)注
關(guān)注
0文章
70瀏覽量
13705 -
TCPIP協(xié)議
+關(guān)注
關(guān)注
0文章
35瀏覽量
12524
發(fā)布評(píng)論請(qǐng)先 登錄
【MiCOKit試用體驗(yàn)】慶科MiCO系統(tǒng)篇(5)MiCO 套接字
UNIX域套接字
命名UNIX域套接字
vrf套接字通信
端點(diǎn)和套接字怎么配置
STM32例程能否與MFC網(wǎng)絡(luò)套接字通信?
如何通過(guò)socket系統(tǒng)調(diào)用創(chuàng)建一個(gè)套接字
一文讀懂RT-Thread的SAL套接字抽象層
lpc54s018套接字創(chuàng)建失敗的原因?
如何在iMXRT1176上的LwIP中使用TCP套接字?
Windows網(wǎng)絡(luò)編程的原始套接字詳細(xì)說(shuō)明
Socket套接字的原理說(shuō)明
網(wǎng)絡(luò)測(cè)試小助手完成套接字的創(chuàng)建使用過(guò)程分析
評(píng)論