亚洲视频二区_亚洲欧洲日本天天堂在线观看_日韩一区二区在线观看_中文字幕不卡一区

公告:魔扣目錄網為廣大站長提供免費收錄網站服務,提交前請做好本站友鏈:【 網站目錄:http://www.430618.com 】, 免友鏈快審服務(50元/站),

點擊這里在線咨詢客服
新站提交
  • 網站:51998
  • 待審:31
  • 小程序:12
  • 文章:1030137
  • 會員:747

原創: 志學Python 志學Python

UDP的生動理解

UDP說自己太難了,沒想到最后是一個舔狗。一般我們講技術的時候,都是講太多理論,搞得我們一臉懵逼,今天我們不這樣做,我們直接講一個生動的例子來講講 UDP

聽好了,有一天,丑男喜歡上一個美女了,并開始展開了死皮賴臉的的追求,他通過身邊的人搞到了美女的微信,QQ,每天都給美女發信息,不管美女在不在線,每天都給美女買吃的,美女卻什么也不恢復,不拒絕,就像懶蛤蟆想吃天鵝肉一樣,每天必舔一遍,最后發現美女一直吃著自己送給她的東西,跟著另外一個男人跑了,舔狗發出了慘叫聲,我太難了,最后死于非命。

使用python實現UDP編程

 

例子僅僅是例子,是生動了一些,但是這樣我們更有畫面感,更有動力學習了,為什么最后UDP變成了舔狗了呢?原來是這樣的,UDP在網絡通信方面是無鏈接狀態的,就好比舔狗發消息,美女不一定在線,不一定收得到,或許他的QQ,微信都是小號,哈哈,太給力了。是不需要確定對方能不能收到,直接發,不用建立連接。QQ發送信息也是通過UDP協議,不用擔心收不到信息。

說了這么多,我們還是上圖比較明確一點,首先解釋一下,要當舔狗(client端),必須要到對方(server端)的正確的QQ號,微信號,手機號,這就相當于網絡中的IP,端口號一樣,只有綁定了這些東西,才能發送東西。

 

使用python實現UDP編程

 

 

UDP 特性

  • UDP 對數據的安全性,是否完整順序到底對方,對方是否接手沒有嚴格要求,繼承IP特性
  • UDP 是面向無連接的,就像我們寄快遞一樣,我們只要把我們的送達地址寫好,至于采用什么快遞都無所謂
  • UDP 是一個一個的發,一個一個的收,數據格式基于數據報(包含報頭以及數據本身)
  • UDP 是應用需要發,就會發送,不處理堵塞(不要把處理UDP程序寫在主線程里面)

應用場景

  • 廣播和多播應用必須使用UDP,也就是 一對多的情況
  • 簡單的請求-應答應用程序可以使用UDP,對數據流,丟不丟包都沒關系,就可以使用UDP
  • 對于海量數據傳輸不應該使用UDP,對數據傳輸比較嚴格
  • DNS、NFS、流媒體傳輸等等

python 實現 UDP

首先是我們的 server.py

#coding:utf-8
from socket import *
from time import ctime
print("=====================時間戳UDP服務器=====================")
HOST = '' #主機號為空白表示可以使用任何可用的地址。
PORT = 28888 #端口號
BUFSIZ = 1024 #接收數據緩沖大小
ADDR = (HOST, PORT)
udpSerSock = socket(AF_INET, SOCK_DGRAM) #創建udp服務器套接字
udpSerSock.bind(ADDR) #套接字與地址綁定
while True:
 print('等待接收消息...')
 data, addr = udpSerSock.recvfrom(BUFSIZ) #連續接收指定字節的數據,接收到的是字節數組
 udpSerSock.sendto(bytes('[%s] %s' % (ctime(), data.decode('utf-8')), 'utf-8'), addr) #向客戶端發送時間戳數據,必須發送字節數組
 print('響應消息到', addr)
udpSerSock.close() #關閉服務器socket

接下來是我們的 client.py

#coding:utf-8
from socket import *
print("=====================UDP客戶端=====================")
HOST = '127.0.0.1' #本機測試
PORT = 28888 #端口號
BUFSIZ = 1024 #接收消息的緩沖大小
ADDR = (HOST, PORT)
udpCliSock = socket(AF_INET, SOCK_DGRAM) #創建客戶端套接字
while True:
 data = input('> ') #接收用戶輸入
 if not data: #如果用戶輸入為空,直接回車就會發送"",""就是代表false
 break
 udpCliSock.sendto(bytes(data,'utf-8'), ADDR) #客戶端發送消息,必須發送字節數組
 data, ADDR = udpCliSock.recvfrom(BUFSIZ) #接收回應消息,接收到的是字節數組
 if not data: #如果接收服務器信息失敗,或沒有消息回應
 break
 print(str(data,'utf-8')) #打印回應消息
udpCliSock.close()#關閉客戶端socket

通訊效果圖

 

使用python實現UDP編程

 

 

使用python實現UDP編程

 

 

最后,我自己是一名從事了多年開發的Python老程序員,辭職目前在做自己的Python私人定制課程,今年年初我花了一個月整理了一份最適合2019年學習的Python學習干貨,可以送給每一位喜歡Python的小伙伴,想要獲取的可以關注我的頭條號并在后臺私信我:01,即可免費獲取。

分享到:
標簽:編程 python UDP
用戶無頭像

網友整理

注冊時間:

網站:5 個   小程序:0 個  文章:12 篇

  • 51998

    網站

  • 12

    小程序

  • 1030137

    文章

  • 747

    會員

趕快注冊賬號,推廣您的網站吧!
最新入駐小程序

數獨大挑戰2018-06-03

數獨一種數學游戲,玩家需要根據9

答題星2018-06-03

您可以通過答題星輕松地創建試卷

全階人生考試2018-06-03

各種考試題,題庫,初中,高中,大學四六

運動步數有氧達人2018-06-03

記錄運動步數,積累氧氣值。還可偷

每日養生app2018-06-03

每日養生,天天健康

體育訓練成績評定2018-06-03

通用課目體育訓練成績評定