對python中UDP,socket的使用詳解
講到UDP和TCP之前咱們先了解一下socket
Socket
socket簡稱套接字,是進程間通信的一種方式。與其他的方式的進程間的通訊的方式不同的是,socket是實現(xiàn)了主機間進程間的通訊。我們網(wǎng)絡上的各種服務都是基于socket來完成的。例如QQ.微信。
怎么樣創(chuàng)建socket呢。
創(chuàng)建一個tcpsocket:
s = socket.socket(socket.AF_INET,socket.SOCK_STREAM)
創(chuàng)建一個UDP類型的socket;
# # 創(chuàng)建套接字 # udpSocket = socket.socket(socket.AF_INET,socket.SOCK_DGRAM)
UDP介紹
udp—–數(shù)據(jù)報文協(xié)議,是一個無連接的簡單的面向數(shù)據(jù)報的運輸層協(xié)議,UDP不提供可靠性,他只是將應用程序傳送給IP層的數(shù)據(jù)報文發(fā)送出去,并不保證能否達到目的地。由于UDP在傳輸?shù)倪^程中不需要和服務器建立鏈接。且沒有超時重發(fā)的的機制。故而傳輸很快。
下面簡單通過示意圖來研究一下UDP。
UDP 發(fā)送數(shù)據(jù)
import socket # 設置socket udpSocket = socket.socket(socket.AF_INET,socket.SOCK_DGRAM) # 設置目的端口和IP sendArr = ('192.168.31.174',65535) sendData = input('請輸入你要發(fā)送的信息') # 發(fā)送數(shù)據(jù),此處有一個坑是sendto()里面的參數(shù)必須二進制數(shù)據(jù),不能直接傳字符串 udpSocket.sendto(sendData.encode('utf-8'),sendArr) udpSocket.close()
UDP 接收數(shù)據(jù)
import socket # 創(chuàng)建UDP套接字 udpSocket = socket.socket(socket.AF_INET,socket.SOCK_DGRAM) # 綁定端口號 udpSocket.bind(("", 7789)) recvData = udpSocket.recvfrom(1024) content, destInfo = recvData print("content is %s"%content) print("content is %s"%content.decode("utf-8")) print(recvData) udpSocket.close()
從打印結果我們可以看出recvData中包含是一個元祖,元祖接收到數(shù)據(jù)方ip.和端口號的。
發(fā)送通過端口號和IP將數(shù)據(jù)發(fā)送給接收方,接收方監(jiān)聽端口,這樣就完成一次UDP通信的過程,這個過程涉及到,發(fā)送方組包,接收解包的過程。
- 詳解python UDP 編程
- Python實現(xiàn)UDP程序通信過程圖解
- python3通過udp實現(xiàn)組播數(shù)據(jù)的發(fā)送和接收操作
- python實現(xiàn)udp聊天窗口
- python實現(xiàn)udp傳輸圖片功能
- python實現(xiàn)UDP協(xié)議下的文件傳輸
- Python udp網(wǎng)絡程序實現(xiàn)發(fā)送、接收數(shù)據(jù)功能示例
- Python樹莓派學習筆記之UDP傳輸視頻幀操作詳解
- Python實現(xiàn)基于socket的udp傳輸與接收功能詳解
- python實現(xiàn)的多任務版udp聊天器功能案例
- python UDP(udp)協(xié)議發(fā)送和接收的實例
- python實現(xiàn)一個簡單的udp通信的示例代碼
- Java 基于UDP協(xié)議實現(xiàn)消息發(fā)送
相關文章
解讀sqlalchemy的常用數(shù)據(jù)類型有哪些
這篇文章主要介紹了解讀sqlalchemy的常用數(shù)據(jù)類型有哪些,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2023-03-03Python 如何手動編寫一個自己的LRU緩存裝飾器的方法實現(xiàn)
本文主要介紹了Python如何手動編寫一個自己的LRU緩存裝飾器,文中通過示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下2021-12-12解決jupyter notebook打不開無反應 瀏覽器未啟動的問題
這篇文章主要介紹了解決jupyter notebook打不開無反應 瀏覽器未啟動的問題,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2020-04-04