Python演示 UDP套接字真的無連線嗎?

2021-10-06 09:40:28 字數 4189 閱讀 4004

清華科技大講堂免費直播課預告:

免費直播課|python資料視覺化與科學計算視覺化案例分享,5月28日晚20:00-21:30

《python可以這樣學》,isbn:9787302456469,董付國,清華大學出版社,第9次印刷

圖書詳情(京東)

董付國老師17本python系列圖書均提供配套教學資源。

功能描述:

建立udp套接字進行通訊,重點演示udp套接字物件方法connect()和bind()的作用。

首先,編寫乙個「服務端」**,用來被動接收傳送端的資訊然後做出一定的響應,向對方連續傳送10個位元組串。**如下:

這個接收端的功能很簡單,就是收到訊息後原路發回10個資訊。如果收到的是bye就關閉套接字。

接下來我們編寫乙個傳送端程式,**如下:

正常情況下,這兩個程式會工作的很好,如圖:

但是如果這個過程被干擾,就不會這樣順利了。編寫下面這個**的人通過某個途徑知道了傳送端「udp套接字呼叫connect_demo2.py"正在使用的埠號,然後直接向其傳送資訊,試圖干擾1和2的工作。**如下:

在攻擊者的干擾下,原來的通訊雙方正常通訊過程被干擾,示例如下:

這樣的話,demo3的執行過程就不會收到attack的影響了,執行過程如下:

這樣處理雖然可以解決問題,但略顯笨拙。實際上套接字已經提供了更好的解決方案,那就是在udp套接字傳送端呼叫connect()方法明確指定通訊對方位址,這樣的話就會在底層自動過濾其他位址發來的任何資訊了,例如:

在udp傳送端呼叫connect()方法註冊指定位址為預設通訊位址之後,可以使用send()直接向預設位址傳送資訊,也可以使用recv()直接從對方接收資訊,不再需要使用sendto()和recvfrom(),並且recv()會自動過濾其他位址發來的資訊,可以避免被第三方攻擊。執行過程如下:

由上可知,udp是無連線協議這一點是一定的,沒有任何疑問。但udp套接字確實是可以呼叫connect()方法的,只不過呼叫connect()並不是真的要連線誰,只是在系統中標記一下通訊對方的位址。這樣的話,收發資訊的**可以簡潔很多,並且可以避免來自第三方的攻擊。

---董付國老師python系列圖書---

(1)《python程式設計(第2版)》(isbn:978-7-302-43651-5),清華大學出版社,2023年8月出版,2023年度清華大學出版社暢銷圖書

(2)《python可以這樣學》(isbn:978-7-302-45646-9),清華大學出版社,2023年2月

(3)《python程式設計基礎(第2版)》(isbn:978-7-302-49056-2)清華大學出版社,2023年1月出版,2023年度清華大學出版社暢銷圖書

(4)《中學生可以這樣學python》(isbn:978-7-302-48039-6)清華大學出版社

(5)《python程式設計開發寶典》(isbn:978-7-302-47210-0)清華大學出版社,2023年10月

(6)《玩轉python輕鬆過二級》(isbn:978-7-302-49916-9)清華大學出版社,2023年5月

(7)《python程式設計基礎與應用》(isbn:978-7-111-60617-8),機械工業出版社,2023年9月

(8)《python程式設計實驗指導書》(isbn:9787302525790),清華大學出版社,2023年4月

(9)《python程式設計基礎與案例集錦(中學版)》(isbn:978-7-121-35539-4),電子工業出版社,2023年4月

(10)《大資料的python基礎》(isbn:978-7-111-62455-4),機械工業出版社,2023年5月出版

(11)譯作《python程式設計》,機械工業出版社(華章),2023年11月出版

(12)繁體版《python也可以這樣學》,台灣博碩文化股份****,2023年10月出版,本書為《python可以這樣學》在台灣發行的繁體版,兩本書內容一樣,不建議重複購買。

(13)《python程式設計例項教程》(isbn:978-7-111-63198-9),機械工業出版社

(14)《python資料分析、挖掘與視覺化》(isbn:978-7-115-52361-7),人民郵電出版社,2023年12月

python相關課程教材選用參考與建議

董付國老師6本python教材pdf版免費閱讀

《python資料分析、挖掘與視覺化》前3章書稿pdf免費閱讀

《python程式設計基礎與應用》前3章書稿pdf免費閱讀

號外號外--python小屋刷題神器上線啦

《中學生可以這樣學python》84節微課免費**位址

python標準庫socketserver使用執行緒混入實現非同步tcp伺服器

python標準庫socketserver實現udp協議時間伺服器

python實現tcp協議套接字多路復用

python使用爬蟲技術獲取本機所在公網ip位址

python在應用層實現udp協議的可靠傳輸

python使用udp協議實現區域網內螢幕廣播

python+socket完美實現tcp長連線保持存活

完美解決python套接字程式設計時tcp斷包與粘包問題

python+winreg+netifaces檢視網路介面資訊

python+psutil獲取本機所有聯網的應用程式資訊

python多執行緒程式設計的乙個掉進去不太容易爬出來的坑

python+socket+多執行緒實現同時應答多客戶端的自助聊天機械人

python實現機房管理軟體的檔案分發功能

技術要點|python監控學生端電腦螢幕自動識別學習狀態

python多執行緒與socket程式設計綜合案例:素數

python監視電子郵箱並提示收到新郵件

python版課堂管理系統中使用udp廣播遠端關閉客戶端程式思路與原始碼

使用python實現電子郵件**功能

基於python的電子教室軟體中遠端關機功能的原理與實現

python獲取本機所有ip位址

python實現區域網內螢幕廣播的技術要點分析

使用python開發sqlite**伺服器

python獲取區域網內所有機器ip位址與網絡卡mac位址

python獲取本機所有網絡卡的mac位址

python+flask+flask-email傳送帶附件的電子郵件

使用python開發會聊天的智慧型小機械人

python使用tcp協議編寫會聊天的小機械人

python實現本機網路流量監視器

python使用udp廣播實現伺服器自動發現

python網頁注入掛馬

python監視網域名稱對應ip位址變化情況

python 套接字程式設計之udp

使用udp協議 服務端 usr bin python3 coding utf 8 auther alphapanda description udp服務端 version 1 date mon dec 2 03 24 46 est 2019 服務端 import socket 1 建立udp物件 t...

python基於udp的套接字

1.基於udp的套接字 1 udp不會產生粘包現象 2 udp是無鏈結的,先啟動哪一端都不會報錯。3 upd是無連線的,所以可以同時多個客戶端跟服務端通訊。2.例子 服務端 from socket import udp server socket af inet,sock dgram 建立乙個伺服器...

UDP套接字程式設計

與面向連線的協議相比,面向無連線協議極為不同。其中乙個重要的不同點就是客戶端與伺服器之間不必建立連線。對於udp套接字程式設計而言,伺服器建立套接字後,呼叫bind 函式將套接字與準備接收資料的介面繫結在一起。和tcp程式設計不同的是,應用程式不必呼叫listen 和accept 函式等待客戶端的連...