日日操夜夜添-日日操影院-日日草夜夜操-日日干干-精品一区二区三区波多野结衣-精品一区二区三区高清免费不卡

公告:魔扣目錄網(wǎng)為廣大站長(zhǎng)提供免費(fèi)收錄網(wǎng)站服務(wù),提交前請(qǐng)做好本站友鏈:【 網(wǎng)站目錄:http://www.ylptlb.cn 】, 免友鏈快審服務(wù)(50元/站),

點(diǎn)擊這里在線咨詢客服
新站提交
  • 網(wǎng)站:51998
  • 待審:31
  • 小程序:12
  • 文章:1030137
  • 會(huì)員:747

原創(chuàng): 志學(xué)Python 志學(xué)Python

UDP的生動(dòng)理解

UDP說(shuō)自己太難了,沒(méi)想到最后是一個(gè)舔狗。一般我們講技術(shù)的時(shí)候,都是講太多理論,搞得我們一臉懵逼,今天我們不這樣做,我們直接講一個(gè)生動(dòng)的例子來(lái)講講 UDP

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

使用python實(shí)現(xiàn)UDP編程

 

例子僅僅是例子,是生動(dòng)了一些,但是這樣我們更有畫面感,更有動(dòng)力學(xué)習(xí)了,為什么最后UDP變成了舔狗了呢?原來(lái)是這樣的,UDP在網(wǎng)絡(luò)通信方面是無(wú)鏈接狀態(tài)的,就好比舔狗發(fā)消息,美女不一定在線,不一定收得到,或許他的QQ,微信都是小號(hào),哈哈,太給力了。是不需要確定對(duì)方能不能收到,直接發(fā),不用建立連接。QQ發(fā)送信息也是通過(guò)UDP協(xié)議,不用擔(dān)心收不到信息。

說(shuō)了這么多,我們還是上圖比較明確一點(diǎn),首先解釋一下,要當(dāng)舔狗(client端),必須要到對(duì)方(server端)的正確的QQ號(hào),微信號(hào),手機(jī)號(hào),這就相當(dāng)于網(wǎng)絡(luò)中的IP,端口號(hào)一樣,只有綁定了這些東西,才能發(fā)送東西。

 

使用python實(shí)現(xiàn)UDP編程

 

 

UDP 特性

  • UDP 對(duì)數(shù)據(jù)的安全性,是否完整順序到底對(duì)方,對(duì)方是否接手沒(méi)有嚴(yán)格要求,繼承IP特性
  • UDP 是面向無(wú)連接的,就像我們寄快遞一樣,我們只要把我們的送達(dá)地址寫好,至于采用什么快遞都無(wú)所謂
  • UDP 是一個(gè)一個(gè)的發(fā),一個(gè)一個(gè)的收,數(shù)據(jù)格式基于數(shù)據(jù)報(bào)(包含報(bào)頭以及數(shù)據(jù)本身)
  • UDP 是應(yīng)用需要發(fā),就會(huì)發(fā)送,不處理堵塞(不要把處理UDP程序?qū)懺谥骶€程里面)

應(yīng)用場(chǎng)景

  • 廣播和多播應(yīng)用必須使用UDP,也就是 一對(duì)多的情況
  • 簡(jiǎn)單的請(qǐng)求-應(yīng)答應(yīng)用程序可以使用UDP,對(duì)數(shù)據(jù)流,丟不丟包都沒(méi)關(guān)系,就可以使用UDP
  • 對(duì)于海量數(shù)據(jù)傳輸不應(yīng)該使用UDP,對(duì)數(shù)據(jù)傳輸比較嚴(yán)格
  • DNS、NFS、流媒體傳輸?shù)鹊?/li>

python 實(shí)現(xiàn) UDP

首先是我們的 server.py

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

接下來(lái)是我們的 client.py

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

通訊效果圖

 

使用python實(shí)現(xiàn)UDP編程

 

 

使用python實(shí)現(xiàn)UDP編程

 

 

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

分享到:
標(biāo)簽:編程 python UDP
用戶無(wú)頭像

網(wǎng)友整理

注冊(cè)時(shí)間:

網(wǎng)站:5 個(gè)   小程序:0 個(gè)  文章:12 篇

  • 51998

    網(wǎng)站

  • 12

    小程序

  • 1030137

    文章

  • 747

    會(huì)員

趕快注冊(cè)賬號(hào),推廣您的網(wǎng)站吧!
最新入駐小程序

數(shù)獨(dú)大挑戰(zhàn)2018-06-03

數(shù)獨(dú)一種數(shù)學(xué)游戲,玩家需要根據(jù)9

答題星2018-06-03

您可以通過(guò)答題星輕松地創(chuàng)建試卷

全階人生考試2018-06-03

各種考試題,題庫(kù),初中,高中,大學(xué)四六

運(yùn)動(dòng)步數(shù)有氧達(dá)人2018-06-03

記錄運(yùn)動(dòng)步數(shù),積累氧氣值。還可偷

每日養(yǎng)生app2018-06-03

每日養(yǎng)生,天天健康

體育訓(xùn)練成績(jī)?cè)u(píng)定2018-06-03

通用課目體育訓(xùn)練成績(jī)?cè)u(píng)定