講到UDP和TCP之前咱們先了解一下socket
Socket
socket簡稱套接字,是進程間通信的一種方式。與其他的方式的進程間的通訊的方式不同的是,socket是實現了主機間進程間的通訊。我們網絡上的各種服務都是基于socket來完成的。例如QQ.微信。
怎么樣創建socket呢。
創建一個tcpsocket:
s = socket.socket(socket.AF_INET,socket.SOCK_STREAM)
創建一個UDP類型的socket;
# # 創建套接字 # udpSocket = socket.socket(socket.AF_INET,socket.SOCK_DGRAM)
UDP介紹
udp―?C數據報文協議,是一個無連接的簡單的面向數據報的運輸層協議,UDP不提供可靠性,他只是將應用程序傳送給IP層的數據報文發送出去,并不保證能否達到目的地。由于UDP在傳輸的過程中不需要和服務器建立鏈接。且沒有超時重發的的機制。故而傳輸很快。
下面簡單通過示意圖來研究一下UDP。
UDP 發送數據
import socket # 設置socket udpSocket = socket.socket(socket.AF_INET,socket.SOCK_DGRAM) # 設置目的端口和IP sendArr = ('192.168.31.174',65535) sendData = input('請輸入你要發送的信息') # 發送數據,此處有一個坑是sendto()里面的參數必須二進制數據,不能直接傳字符串 udpSocket.sendto(sendData.encode('utf-8'),sendArr) udpSocket.close()
UDP 接收數據
import socket # 創建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中包含是一個元祖,元祖接收到數據方ip.和端口號的。
發送通過端口號和IP將數據發送給接收方,接收方監聽端口,這樣就完成一次UDP通信的過程,這個過程涉及到,發送方組包,接收解包的過程。
更多文章、技術交流、商務合作、聯系博主
微信掃碼或搜索:z360901061

微信掃一掃加我為好友
QQ號聯系: 360901061
您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。
【本文對您有幫助就好】元
