日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区

您的位置:首頁技術文章
文章詳情頁

詳解python UDP 編程

瀏覽:30日期:2022-07-13 10:40:06

前面我們講了 TCP 編程,我們知道 TCP 可以建立可靠連接,并且通信雙方都可以以流的形式發送數據。本文我們再來介紹另一個常用的協議?UDP。相對TCP,UDP則是面向無連接的協議。

UDP 協議

我們來看 UDP 的定義:

UDP 協議(User Datagram Protocol),中文名是用戶數據報協議,是 OSI(Open System Interconnection,開放式系統互聯) 參考模型中一種無連接的傳輸層協議,提供面向事務的簡單不可靠信息傳送服務。

從這個定義中,我們可以總結出 UDP 的幾個特點以及其與 TCP 的區別:

UDP 是用戶數據報協議,傳輸模式是數據報,而 TCP 是基于字節流的傳輸協議。 UDP 是無連接的協議,每個數據報都是一個獨立的信息,包括完整的源地址或目的地址,它在網絡上以任何可能的路徑傳往目的地,因此能否到達目的地,到達目的地的時間以及內容的正確性都是不能被保證的。 UDP 是簡單不可靠的協議,它不提供可靠性,只是把數據包發送出去,并不保證能夠到達目的地。由于它不需要在客戶端和服務端之間建立連接,也沒有超時重發機制,所以傳輸速度很快。

從以上特點,我們可以看到 UDP 適合應用在每次傳輸數據量小、對數據完整性要求不高、對傳輸速度要求高的領域。這里面最典型的就是即時通信的場景,微信是一個很常見的例子。相信大家在使用微信的時候都遇到過先發的消息后收到,或者有些發送的消息對方沒有收到的情況吧,這就是 UDP 協議典型的特點,不保證傳輸數據的完整性和順序性。除此之外, UDP 還應用在在線視頻、網絡電話等場景。

UDP 傳輸過程

我們在講 TCP 的時候,我們說 TCP 客戶端和服務端必須先連接才可以傳輸數據:客戶端先請求連接服務器,服務器接受連接請求,然后雙方才可以通信。在 UDP 協議里,客戶端只需要知道服務器的地址和端口號,就可以直接發送數據了。

我們來看下 UDP 傳輸的流程圖:

詳解python UDP 編程

UDP服務器的建立可以歸納這幾步:

創建 socket(套接字) 綁定 socket 的 IP 地址和端口號 接收客戶端數據 關閉連接

udp客戶端的創建可總結為這幾步:

創建 socket(套接字) 向服務器發送數據 關閉連接

這里需要注意的是 UDP 客戶端連接到服務器的 IP 和端口號必須是 UDP 服務器的 IP 和監聽的端口號,服務器服務器只需要綁定 IP 和端口號,就可以時刻準備接收客戶端發送的數據,此時服務器處于阻塞狀態,直到接收到數據為止。

UDP 客戶端

創建 socket,可以這樣做:

# 導入socket庫import socket# 創建一個sockets = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)

創建 socket 時,第一個參數 socket.AF_INET 表示指定使用 IPv4 協議,如果要使用 IPv6 協議,就指定為 socket.AF_INET6。SOCK_DGRAM 指定基于 UDP 的數據報式 Socket 通信。

創建了 socket 之后,我們就可以向目標地址發送數據報了:

# 發送數據s.sendto(b’Hello Server’, (’127.0.0.1’, 6000))

第一個參數是需要發送的數據報內容,第二個參數是 IP 地址和端口號的二元組。

如果是接收數據的話,我們可以這樣寫:

# 接收數據data, addr = s.recv(1024)# 解碼接收到的數據data = data.decode(’utf-8’)

接收信息的時候,第一個 data 表示接收到的數據, addr 是對方的 IP 地址和端口號的二元組。

想要關閉 socket,直接調用 close() 方法即可:

# 關閉 socketsocket.close()

UDP 服務器

相比于客戶端,服務器端只是多了一個步驟,在創建 socket 之后,需要綁定一個 IP 地址和端口號,以便接收客戶端隨時可能發送過來的數據。綁定的方法為:

# 綁定 IP 和端口s.bind((’127.0.0.1’, 6000))

UDP 簡單實例

我們通過一個簡單的實例來體會下 UDP 的客戶端和服務器的通信流程。

服務器代碼為:

import socket# 創建 socketsk = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)# 綁定 IP 和端口號sk.bind((’127.0.0.1’, 6000))while True: # 接收數據報 msg, addr = sk.recvfrom(1024) # 打印 print(’來自[%s:%s]的消息: %s’ % (addr[0], addr[1], msg.decode(’utf-8’))) # 等待輸入 inp = input(’>>>’) # 發送數據報 sk.sendto(inp.encode(’utf-8’), addr)# 關閉 socketsk.close()

這里,我們先創建 socket,然后綁定本機的6000端口,然后等待接收客戶端發送的數據報,接收到數據后將數據內容打印在控制臺。然后可以在控制臺輸入回復內容,發送給客戶端。

客戶端代碼:

import socket# 創建 socketsk = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)addr = (’127.0.0.1’, 6000)while True: # 等待輸入 msg = input(’>>>’) # 發送數據報 sk.sendto(msg.encode(’utf-8’), addr) # 接收數據報 msg_recv, addr = sk.recvfrom(1024) # 打印 print(msg_recv.decode(’utf-8’))# 關閉 socketsk.close()

在客戶端代碼中,我們就只是創建 socket,然后在控制臺輸入需要向服務器發送的內容,通過 sentto() 方法發送給服務器,然后接收服務器返回的內容,將接收的內容打印到控制臺。

分別運行客戶端和服務器代碼,然后我們在客戶端的控制臺輸入 “hello server”,我們可以看到服務器的控制臺打印了客戶端發送的內容,然后我們在服務器控制臺輸入 “hello client”,同樣在客戶端控制臺可以看你到內容。

下面是客戶端的控制臺內容:

>>>hello serverhello client>>>

下面是服務器的控制臺內容:

來自[127.0.0.1:61207]的消息: hello server>>>hello client

這個實例其實就是一個簡單的聊天模型,客戶端和服務器就像兩個人一樣可以發送和接收對方的信息。

那么多人群聊怎么實現呢?簡單來說,我們需要設置一臺中心服務器,我們每個人發送的內容都先發送到中心服務器,然后中心服務器再轉發到每個群聊的人。

總結

本文為大家介紹了 UDP 編程的基本原理以及通過 Python 實現一個最簡單的聊天程序來模擬 UDP 通信的過程。通過本文的學習,我們需要對 UDP 協議有基本的認識,以及對 UDP 的通信過程比較熟悉。

以上就是詳解python UDP 編程的詳細內容,更多關于python UDP 編程的資料請關注好吧啦網其它相關文章!

標簽: Python 編程
相關文章:
日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区
亚洲91久久| 日韩成人精品一区二区| 日韩精品午夜| 亚洲va中文在线播放免费| 国产白浆在线免费观看| av在线最新| 久久九九国产| 亚洲精品国产偷自在线观看| 久久三级福利| 99国产精品久久久久久久 | 国产精品天天看天天狠| 国产精品一区二区三区av| 久久99精品久久久野外观看| 精品视频网站| 91精品国产福利在线观看麻豆| 欧美日韩国产高清电影| 蜜桃伊人久久| 欧美伊人久久| 国产一区二区三区视频在线| 日本久久成人网| 日韩中文字幕区一区有砖一区| 亚洲综合福利| 国产精品国产三级在线观看| 精品国产一区二区三区2021| 色一区二区三区| 欧美日韩国产高清| 日韩av一级片| 亚洲黄色网址| 成人在线免费观看网站| 首页国产精品| 久久久人人人| 亚洲一区导航| 卡一卡二国产精品| 少妇久久久久| 免费的成人av| 麻豆精品在线观看| 日本免费久久| 丝瓜av网站精品一区二区| 国产欧美日韩亚洲一区二区三区| 国产一区二区三区成人欧美日韩在线观看| 久久精选视频| 97久久亚洲| 久久天堂av| 青青草国产精品亚洲专区无| 97国产成人高清在线观看| 性欧美精品高清| 麻豆国产精品| 欧美日韩四区| 国产精品一卡| 久久九九精品| 国产日韩欧美在线播放不卡| 久久久久.com| 日韩av在线免费观看不卡| 精品日韩视频| 欧美日韩1区2区3区| 亚洲91精品| 欧美自拍一区| 蜜桃成人av| 97人人精品| 都市激情国产精品| 亚洲一区二区三区无吗| 色婷婷色综合| 日本综合视频| 欧美综合另类| 国产精品久久久一区二区| 激情婷婷综合| 国产在线观看91一区二区三区| 99热精品久久| 国产极品一区| 亚洲一区二区三区高清| 精品免费av一区二区三区| 天堂va蜜桃一区二区三区| 日韩专区精品| 欧美a一区二区| 亚洲久久视频| 亚洲激情黄色| 97久久中文字幕| 日韩精品一区第一页| 欧美日韩国产观看视频| 国产欧美一区二区三区米奇 | 美女性感视频久久| 中文字幕成人| 国产手机视频一区二区| 日韩国产一区| 久久亚州av| 日韩国产在线观看| 喷白浆一区二区| 久久久影院免费| 久久久久久久欧美精品| 久久99伊人| 久久国产日本精品| 老司机免费视频一区二区三区| 亚洲欧美网站在线观看| 亚洲欧洲一区| 天堂资源在线亚洲| 久草免费在线视频| 国产一区二区三区久久久久久久久| 日韩精品乱码av一区二区| 在线视频亚洲| 亚洲午夜精品久久久久久app| 精品伊人久久久| 欧美午夜三级| 蜜臀精品久久久久久蜜臀| 日韩精品免费一区二区在线观看| 久久久久久久欧美精品| 日本午夜精品一区二区三区电影| 亚洲精品影院在线观看| 亚洲一区中文| 不卡一区综合视频| 99精品视频在线| 91精品一区二区三区综合| 精品三级久久| 日本一区二区三区视频在线看 | 91成人在线网站| 在线精品一区| 亚洲欧洲av| 日韩免费精品| 日韩精选在线| 视频精品一区| 69堂免费精品视频在线播放| 日韩高清不卡一区| 日韩av在线免费观看不卡| 日韩高清不卡一区| 青青草国产精品亚洲专区无| 欧美日韩一区二区三区不卡视频| 日韩高清不卡一区二区| 欧美日韩一区二区三区不卡视频| 日本不卡一区二区三区| 久久精品97| 国产精品地址| 国产成人精品福利| 色综合www| 亚洲激情av| 日韩美女精品| 国产精品videosex极品| 国产一区二区三区不卡av| 天堂√8在线中文| 国产精品99一区二区| 国产精品.xx视频.xxtv| 国产精品久久久久蜜臀| 亚洲日本网址| 日韩午夜免费| 亚洲精品韩国| 国产免费播放一区二区| 天海翼精品一区二区三区| 视频一区在线播放| 老鸭窝毛片一区二区三区| 亚洲一区二区三区久久久| 日韩av成人高清| 麻豆一区二区三区| 欧美精品高清| 夜夜精品视频| 69堂免费精品视频在线播放| 精品网站aaa| 免费观看不卡av| 亚洲影院天堂中文av色| 欧美亚洲专区| 免费一级欧美片在线观看网站 | 成人va天堂| 蜜桃久久久久久| 国产精品高清一区二区| 久久精品欧美一区| 日韩精品中文字幕一区二区| 精品一区二区三区免费看| 亚洲91精品| 日韩av影院| 亚洲91精品| 欧美在线看片| 欧美日韩一区二区综合| 日韩精品中文字幕吗一区二区| 久久不卡国产精品一区二区| 五月激情久久| 日韩精品视频一区二区三区| 国产一区二区精品久| 亚洲神马久久| 久久av影院| 一区在线免费观看| 国产欧美日韩一区二区三区四区 | 国产亚洲欧美日韩精品一区二区三区| 欧美91在线|欧美| 久久精品国产www456c0m| 中文字幕成人| 中文字幕在线看片| 日韩欧美中文字幕一区二区三区| 国产精品一线天粉嫩av| 久久亚洲国产| 国产区精品区| 99re国产精品| 精品视频在线一区二区在线| 亚洲黄页一区| 国产一区二区三区久久| 一区二区三区网站| 黄色aa久久| 日韩和欧美一区二区| 久久高清精品| 久久不见久久见免费视频7| 久久国产88| 日韩成人综合| 国产精品视频一区二区三区综合 | 日本免费在线视频不卡一不卡二|