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

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

詳解python UDP 編程

瀏覽:25日期: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久久,三上悠亚国产精品一区二区三区
日韩不卡视频在线观看| 亚洲麻豆一区| 日本亚州欧洲精品不卡| 香蕉久久国产| 免费美女久久99| 亚洲日本久久| 日韩av中文字幕一区二区三区| 蜜桃av一区二区| 亚洲精品高潮| 美女日韩在线中文字幕| 日韩1区2区3区| 日韩av免费| 91精品亚洲| 日韩欧美2区| 欧美日韩亚洲一区二区三区在线| 亚洲在线成人| 亚洲人成亚洲精品| 亚洲精品动态| 久久精品 人人爱| 国产精品v一区二区三区| 久久只有精品| 欧美日韩国产v| 午夜免费一区| 亚洲一区av| 亚洲精品在线二区| 奇米色欧美一区二区三区| 麻豆成人在线观看| 久久久久久久久久久妇女| 亚洲欧美日韩在线观看a三区| 少妇精品在线| 欧美1区二区| 久久久久国产精品一区二区| 久久成人一区| 欧美视频久久| 91视频精品| 99热免费精品| 国产欧美日韩精品高清二区综合区| 久久久久免费| 国产精品丝袜xxxxxxx| 视频一区二区三区在线| 国产精品一区二区三区四区在线观看 | 99精品视频在线| 国产免费成人| 国产麻豆一区二区三区| 日韩在线中文| 亚洲人成亚洲精品| 国产精品久久久久77777丨 | 精品伊人久久久| 不卡视频在线| 欧美中文高清| 久久人人精品| 欧美日韩亚洲一区二区三区在线| 精品国产免费人成网站| 中文字幕成人| se01亚洲视频| 欧美性www| 国户精品久久久久久久久久久不卡 | 亚洲大全视频| 欧美日一区二区三区在线观看国产免 | 日韩欧乱色一区二区三区在线| 国产精品成人一区二区不卡| 夜夜精品视频| 精品久久影院| 中文不卡在线| 成人在线超碰| 亚洲精品综合| 欧美99久久| 久久av免费看| 石原莉奈在线亚洲三区| 亚洲黄色中文字幕| 婷婷亚洲成人| 99久久激情| 国产精品对白久久久久粗| 黄色日韩在线| 亚洲国产成人二区| 日韩av中文字幕一区| 天堂资源在线亚洲| 国产精品成人自拍| 免费在线成人网| 日韩精品不卡一区二区| 国产伦理久久久久久妇女| 亚洲一区二区三区高清不卡| 91免费精品| 欧美aa在线视频| 91精品国产一区二区在线观看| 一区二区自拍| 日韩欧美一区二区三区在线观看| 国产精品一卡| 日本不卡的三区四区五区| 亚洲欧美激情诱惑| 999久久久精品国产| 久久精品九色| 国产日韩中文在线中文字幕| 最新国产精品久久久| 欧美一区二区三区激情视频| 成人在线黄色| 久久不见久久见中文字幕免费| 日本欧美韩国一区三区| 男人的天堂久久精品| 99成人在线视频| 国产v日韩v欧美v| 美女久久久久久| 国产精品久久久久久妇女| 欧美日韩网址| 日本免费在线视频不卡一不卡二| 久久福利一区| 亚洲精品成人| 欧美手机在线| 日韩精品看片| 国产999精品在线观看| 国产精品亚洲欧美日韩一区在线| 亚洲精品视频一二三区| 玖玖精品视频| 国产亚洲在线| 亚洲欧美日韩在线观看a三区| 午夜电影亚洲| 亚洲精品网址| aa国产精品| 亚洲精选91| 日韩国产欧美在线视频| 日韩avvvv在线播放| 欧美私人啪啪vps| 国产日韩1区| 国产日韩一区二区三免费高清| 日韩精品亚洲aⅴ在线影院| 免费不卡在线视频| 蜜臀国产一区二区三区在线播放 | 在线日韩av| 免费久久久久久久久| 久久中文字幕av| 不卡中文一二三区| 视频一区二区三区在线| 中文字幕日韩欧美精品高清在线| 亚洲伊人影院| 日韩高清不卡在线| 日本va欧美va精品发布| 亚洲色图网站| 久久免费高清| 香蕉久久久久久久av网站| 色在线中文字幕| 精品一区二区三区亚洲| 国产一区二区三区四区| 青青伊人久久| 国产一区二区三区不卡视频网站| 国产精品美女午夜爽爽| 国产日韩欧美一区二区三区| 国产精品男女| 日韩不卡视频在线观看| 性欧美长视频| 国产精品久久久久毛片大屁完整版| 波多野结衣久久精品| 久久亚洲国产| 精品国产一区二区三区性色av| 精品国产精品久久一区免费式| 国产成人免费精品| 国产精品99一区二区| 日韩中文欧美在线| 欧美在线看片| 国产精品伦理久久久久久| 亚洲性视频h| 中文字幕av亚洲精品一部二部 | 日韩高清成人| 99在线精品免费视频九九视| 日本特黄久久久高潮| 色婷婷色综合| 9色国产精品| 日韩久久一区| sm捆绑调教国产免费网站在线观看| 成人av二区| 欧美在线不卡| 久久裸体视频| 日本成人中文字幕在线视频| 国产+成+人+亚洲欧洲在线| 欧美在线网站| 国产精品美女在线观看直播| 欧美日韩精品免费观看视欧美高清免费大片 | 国产探花在线精品一区二区| 麻豆精品新av中文字幕| 99久久精品国产亚洲精品| 亚洲一区二区日韩| 九九99久久精品在免费线bt| 久久久久一区| 91成人在线网站| 国产麻豆久久| 亚洲69av| 四虎4545www国产精品| 日本不卡视频在线| 九色porny丨国产首页在线| 亚洲一区二区小说| 久久精品国产久精国产爱| 久久精品在线| 国产精品丝袜在线播放| 国产一区导航| 激情综合五月| 免费高清在线一区| 免费一二一二在线视频| 日韩av在线播放中文字幕| 国产综合欧美| 国产一区二区三区四区大秀| 日韩在线麻豆|