Python作為一種膠水語言,可以作為各領域的快速開發(fā)工具,大大提高了開發(fā)人員處理事務的效率。在互聯(lián)網(wǎng)行業(yè),無論是網(wǎng)絡服務器的開發(fā),還是網(wǎng)絡客戶端的開發(fā),比如爬蟲,都會涉及到底層的操作原理,也就是socket編程。今天我們就來介紹一下python下套接字編程開發(fā)中的UDP協(xié)議編程過程。通過本文,我們可以對網(wǎng)絡編程中底層的UDP協(xié)議有一定的了解。
什么是UDP協(xié)議Udp,用戶數(shù)據(jù)報協(xié)議,是一種無連接且簡單的面向數(shù)據(jù)報的傳輸層協(xié)議。UDP不提供可靠性,它只是把應用發(fā)送的數(shù)據(jù)包發(fā)出去,送到IP層,但不能保證能到達目的地。因為UDP在傳輸數(shù)據(jù)報之前不需要在客戶端和服務器之間建立連接,也沒有超時重傳等機制,所以傳輸速度非常快。
UDP是一種面向無連接的協(xié)議,每個數(shù)據(jù)包都是一個獨立的消息,包括完整的源地址或目的地址,通過網(wǎng)絡上任何可能的路徑傳輸?shù)侥康牡?,因此是否能到達目的地、到達目的地的時間以及內容的正確性都無法保證。
UDP是面向消息的協(xié)議,通信時不需要建立連接,數(shù)據(jù)傳輸自然不可靠。UDP通常用于多點通信和實時數(shù)據(jù)服務,例如:
發(fā)送小尺寸數(shù)據(jù)(如對DNS服務器進行IP地址查詢時)在接收到數(shù)據(jù),給出應答較困難的網(wǎng)絡中使用UDP。(如:無線網(wǎng)絡)適合于廣播/組播式通信中。MSN/QQ/Skype等即時通訊軟件的點對點文本通訊以及音視頻通訊通常采用UDP協(xié)議在流媒體、視頻點播、網(wǎng)絡電話和網(wǎng)絡電視等網(wǎng)絡多媒體服務中,UDP通常用于實時數(shù)據(jù)傳輸
UDP服務器編程python中提供了一個socket模塊,封裝了系統(tǒng)底層socket接口的python格式API。對于python開發(fā)人員來說,套接字編程只有通過導入這個模塊才能實現(xiàn)。
按照C/S模式的要求,首先要有一個服務器,等待客戶端的請求,然后根據(jù)請求內容提供服務,所以UDP服務器的設計過程是:
1.應用對象:從內核申請一個具有UDP特性的套接字對象;
2.配置結構:服務器要監(jiān)控的端口和IP地址用元組結構表示;
3.綁定結構:使用綁定系統(tǒng)調用通知內核打開哪個端口,哪個IP地址;
4.等待數(shù)據(jù):使用recvfrom接收數(shù)據(jù),如果沒有接收到數(shù)據(jù),則阻塞等待;
UDP客戶端有了服務器之后,我們只需要設計一個客戶端,向服務器發(fā)送一個請求,就完成了C/S模型。
那么UDP的客戶端設計流程是:
1.應用對象:從內核申請一個具有UDP特性的套接字對象;
2.配置目標:作為客戶端,需要了解服務器的身份信息,才能將數(shù)據(jù)發(fā)送到指定地點;
3.發(fā)送數(shù)據(jù):使用Send將數(shù)據(jù)發(fā)送到目標地址;
1.《udp通信 Python技術:socket編程之UDP編程》援引自互聯(lián)網(wǎng),旨在傳遞更多網(wǎng)絡信息知識,僅代表作者本人觀點,與本網(wǎng)站無關,侵刪請聯(lián)系頁腳下方聯(lián)系方式。
2.《udp通信 Python技術:socket編程之UDP編程》僅供讀者參考,本網(wǎng)站未對該內容進行證實,對其原創(chuàng)性、真實性、完整性、及時性不作任何保證。
3.文章轉載時請保留本站內容來源地址,http://f99ss.com/guonei/1250473.html