在Python中發(fā)送UDP數(shù)據(jù)包的方法步驟
今天,我們將學(xué)習(xí)用戶數(shù)據(jù)報協(xié)議(UDP),并了解如何使用 Python 編程發(fā)送 UDP 數(shù)據(jù)包。
在Python中發(fā)送UDP數(shù)據(jù)包
用戶數(shù)據(jù)報協(xié)議 (UDP) 和 TCP/IP 的運(yùn)行方式不同。 UDP 是一種面向消息的協(xié)議,與 TCP 不同,TCP 是一種面向流的協(xié)議,可確保所有數(shù)據(jù)都按正確的順序傳輸。
設(shè)置 UDP 套接字要容易一些,因?yàn)?UDP 不需要持續(xù)很長時間的連接。 另一方面,與 TCP 不同,UDP 消息的傳遞并不確定,并且它們必須適合單個數(shù)據(jù)包。
我們怎樣才能用 Python 做到這一點(diǎn)呢? Python 有一個名為 socket 的內(nèi)置模塊,您必須導(dǎo)入該模塊。
import socket
一旦我們導(dǎo)入了套接字模塊,我們必須聲明我們將嘗試發(fā)送 UDP 消息的端口號和 IP 地址。
IP = "127.0.0.1" PORT = 5003 Message = "Info"
現(xiàn)在我們已經(jīng)聲明了這幾個變量,現(xiàn)在是時候構(gòu)建套接字了,我們將通過該套接字將 UDP 消息發(fā)送到服務(wù)器。
Sock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM) Sock.sendto(Message, (IP,PORT))
您必須創(chuàng)建兩個文件; 客戶端.py 和服務(wù)器.py。 客戶端和服務(wù)器文件必須位于相應(yīng)的服務(wù)器和客戶端系統(tǒng)中。
創(chuàng)建客戶端程序后,下一步就是創(chuàng)建服務(wù)器程序,該程序?qū)⒈O(jiān)視指定 IP 地址和端口號的任何 UDP 數(shù)據(jù)包。
請注意,客戶端 Python 腳本必須在此服務(wù)器之前執(zhí)行,否則客戶端 Python 腳本將失敗。
一旦我們導(dǎo)入了套接字模塊并提供了 IP 地址和端口號,我們就可以創(chuàng)建另一個套接字,該套接字將與我們在客戶端應(yīng)用程序中創(chuàng)建的套接字完全相同。
Server.py 文件的示例代碼:
import socket
IP = "127.0.0.1"
PORT = 5003
MESSAGE= "The meeting is From 10 pm."
print(f"sending information")
print(f"{MESSAGE} to {IP}:{PORT}")
sock = socket.socket(socket.AF_INET,
socket.SOCK_DGRAM)
sock.sendto(MESSAGE.encode(), (IP, PORT))
輸出:
sending information The meeting is From 10 pm. to 127.0.0.1:5003
您還應(yīng)該編寫代碼來維護(hù)您的腳本不斷偵聽此連接,直到構(gòu)建服務(wù)器套接字后它終止。
它采用簡單的 while 循環(huán)的形式,如下所示:
Client.py 文件的示例代碼:
import socket
IP = "127.0.0.1"
PORT = 5003
sock = socket.socket(socket.AF_INET,
socket.SOCK_DGRAM)
sock.bind((IP, PORT))
print(f"start listening to {IP}:{PORT}")
while True:
data, addr = sock.recvfrom(1024)
print(f"received message: {data}")
輸出:
start listening to 127.0.0.1:5003 received message: The meeting is From 10 pm.
這樣我們就可以在Python中發(fā)送UDP數(shù)據(jù)包了。
到此這篇關(guān)于在Python中發(fā)送UDP數(shù)據(jù)包的方法步驟的文章就介紹到這了,更多相關(guān)Python發(fā)送UDP數(shù)據(jù)包內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Python3爬蟲教程之利用Python實(shí)現(xiàn)發(fā)送天氣預(yù)報郵件
這篇文章主要給大家介紹了關(guān)于Python3爬蟲教程之利用Python實(shí)現(xiàn)發(fā)送天氣預(yù)報郵件的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面來一起看看吧2018-12-12
python飛機(jī)大戰(zhàn)游戲?qū)嵗v解
在本篇文章里小編給大家整理的是一篇關(guān)于python飛機(jī)大戰(zhàn)游戲?qū)嵗v解,有興趣的朋友們可以參考下。2020-12-12
python實(shí)現(xiàn)二級登陸菜單及安裝過程
這篇文章主要介紹了python實(shí)現(xiàn)二級登陸菜單及安裝過程,,本文圖文并茂給大家介紹的非常詳細(xì),具有一定的參考借鑒價值,需要的朋友可以參考下2019-06-06
利用Python實(shí)現(xiàn)端口掃描器的全過程
這篇文章主要給大家介紹了關(guān)于如何利用Python實(shí)現(xiàn)端口掃描器的相關(guān)資料,用來檢測目標(biāo)服務(wù)器上有哪些端口開放,本文適用于有 Python和計(jì)算機(jī)網(wǎng)絡(luò)語言基礎(chǔ)的用戶,需要的朋友可以參考下2021-08-08
python實(shí)現(xiàn)m3u8格式轉(zhuǎn)換為mp4視頻格式
這篇文章主要為大家詳細(xì)介紹了python實(shí)現(xiàn)m3u8格式轉(zhuǎn)換為mp4視頻格式,具有一定的參考價值,感興趣的小伙伴們可以參考一下2018-02-02
pandas使用QGraphicsView自動排列項(xiàng)目的實(shí)現(xiàn)
本文主要介紹了pandas使用QGraphicsView自動排列項(xiàng)目的實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2025-04-04
Python?OpenCV實(shí)現(xiàn)圖像增強(qiáng)操作詳解
由于很多不確定因素,導(dǎo)致圖像采集的光環(huán)境極其復(fù)雜;為了提高目標(biāo)檢測模型的泛化能力,本文將使用python中的opencv模塊實(shí)現(xiàn)常見的圖像增強(qiáng)方法,感興趣的可以了解一下2022-10-10
Python Web靜態(tài)服務(wù)器非堵塞模式實(shí)現(xiàn)方法示例
這篇文章主要介紹了Python Web靜態(tài)服務(wù)器非堵塞模式實(shí)現(xiàn)方法,結(jié)合實(shí)例形式分析了Python單進(jìn)程非堵塞模式實(shí)現(xiàn)的Web靜態(tài)服務(wù)器相關(guān)操作技巧,需要的朋友可以參考下2019-11-11

