pythonUDP編程的案例分析-創(chuàng)新互聯(lián)

這篇文章主要介紹python UDP編程的案例分析,文中介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們一定要看完!

目前成都創(chuàng)新互聯(lián)已為超過(guò)千家的企業(yè)提供了網(wǎng)站建設(shè)、域名、虛擬空間、成都網(wǎng)站托管、企業(yè)網(wǎng)站設(shè)計(jì)、濱城網(wǎng)站維護(hù)等服務(wù),公司將堅(jiān)持客戶導(dǎo)向、應(yīng)用為本的策略,正道將秉承"和諧、參與、激情"的文化,與客戶和合作伙伴齊心協(xié)力一起成長(zhǎng),共同發(fā)展。

前面我們講了 TCP 編程,我們知道 TCP 可以建立可靠連接,并且通信雙方都可以以流的形式發(fā)送數(shù)據(jù)。本文我們?cè)賮?lái)介紹另一個(gè)常用的協(xié)議–UDP。相對(duì)TCP,UDP則是面向無(wú)連接的協(xié)議。

UDP 協(xié)議

我們來(lái)看 UDP 的定義:

UDP 協(xié)議(User Datagram Protocol),中文名是用戶數(shù)據(jù)報(bào)協(xié)議,是 OSI(Open System Interconnection,開(kāi)放式系統(tǒng)互聯(lián)) 參考模型中一種無(wú)連接的傳輸層協(xié)議,提供面向事務(wù)的簡(jiǎn)單不可靠信息傳送服務(wù)。

從這個(gè)定義中,我們可以總結(jié)出 UDP 的幾個(gè)特點(diǎn)以及其與 TCP 的區(qū)別:

  • UDP 是用戶數(shù)據(jù)報(bào)協(xié)議,傳輸模式是數(shù)據(jù)報(bào),而 TCP 是基于字節(jié)流的傳輸協(xié)議。
  • UDP 是無(wú)連接的協(xié)議,每個(gè)數(shù)據(jù)報(bào)都是一個(gè)獨(dú)立的信息,包括完整的源地址或目的地址,它在網(wǎng)絡(luò)上以任何可能的路徑傳往目的地,因此能否到達(dá)目的地,到達(dá)目的地的時(shí)間以及內(nèi)容的正確性都是不能被保證的。
  • UDP 是簡(jiǎn)單不可靠的協(xié)議,它不提供可靠性,只是把數(shù)據(jù)包發(fā)送出去,并不保證能夠到達(dá)目的地。由于它不需要在客戶端和服務(wù)端之間建立連接,也沒(méi)有超時(shí)重發(fā)機(jī)制,所以傳輸速度很快。
     

從以上特點(diǎn),我們可以看到 UDP 適合應(yīng)用在每次傳輸數(shù)據(jù)量小、對(duì)數(shù)據(jù)完整性要求不高、對(duì)傳輸速度要求高的領(lǐng)域。這里面最典型的就是即時(shí)通信的場(chǎng)景,微信是一個(gè)很常見(jiàn)的例子。相信大家在使用微信的時(shí)候都遇到過(guò)先發(fā)的消息后收到,或者有些發(fā)送的消息對(duì)方?jīng)]有收到的情況吧,這就是 UDP 協(xié)議典型的特點(diǎn),不保證傳輸數(shù)據(jù)的完整性和順序性。除此之外, UDP 還應(yīng)用在在線視頻、網(wǎng)絡(luò)電話等場(chǎng)景。

UDP 傳輸過(guò)程

我們?cè)谥v TCP 的時(shí)候,我們說(shuō) TCP 客戶端和服務(wù)端必須先連接才可以傳輸數(shù)據(jù):客戶端先請(qǐng)求連接服務(wù)器,服務(wù)器接受連接請(qǐng)求,然后雙方才可以通信。在 UDP 協(xié)議里,客戶端只需要知道服務(wù)器的地址和端口號(hào),就可以直接發(fā)送數(shù)據(jù)了。

我們來(lái)看下 UDP 傳輸?shù)牧鞒虉D:

python UDP編程的案例分析

UDP服務(wù)器的建立可以歸納這幾步:

  • 創(chuàng)建 socket(套接字)
  • 綁定 socket 的 IP 地址和端口號(hào)
  • 接收客戶端數(shù)據(jù)
  • 關(guān)閉連接

udp客戶端的創(chuàng)建可總結(jié)為這幾步:

  • 創(chuàng)建 socket(套接字)
  • 向服務(wù)器發(fā)送數(shù)據(jù)
  • 關(guān)閉連接
     

這里需要注意的是 UDP 客戶端連接到服務(wù)器的 IP 和端口號(hào)必須是 UDP 服務(wù)器的 IP 和監(jiān)聽(tīng)的端口號(hào),服務(wù)器服務(wù)器只需要綁定 IP 和端口號(hào),就可以時(shí)刻準(zhǔn)備接收客戶端發(fā)送的數(shù)據(jù),此時(shí)服務(wù)器處于阻塞狀態(tài),直到接收到數(shù)據(jù)為止。

UDP 客戶端

創(chuàng)建 socket,可以這樣做:

# 導(dǎo)入socket庫(kù)
import socket

# 創(chuàng)建一個(gè)socket
s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)

標(biāo)題名稱:pythonUDP編程的案例分析-創(chuàng)新互聯(lián)
文章分享:http://muchs.cn/article10/ddcedo.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供手機(jī)網(wǎng)站建設(shè)品牌網(wǎng)站制作、ChatGPT、移動(dòng)網(wǎng)站建設(shè)、服務(wù)器托管、自適應(yīng)網(wǎng)站

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)

成都網(wǎng)站建設(shè)公司