udp --- 使用者資料報協議,是乙個無連線的簡單的面向資料報的運輸層協議。
udp不提供可靠性,它只是把應用程式傳給ip層的資料報傳送出去,但是並 不能保證它們能到達目的地。
udp是一種面向無連線的協議,每個資料報都是乙個獨立的資訊,包括完整 的源位址或目的位址,它在網路上以任何可能的路徑傳往目的地,因此能否 到達目的地,到達目的地的時間、次序以及內容的正確性都是不能被保證的
udp通訊過程:
udp通訊比較簡單
先寫乙個udp伺服器,一般步驟如下:
1、首先是要建立乙個socket套接字:socket()
3、只有伺服器和客戶端繫結相同的ip位址,伺服器和客戶端才可以互相接收資料和傳送資料,常理來想,伺服器是乙隻被開啟的,也是一直接受資料,所以在接受資料的過程中,我們需要無限迴圈:recv()
4、如果我們要傳送資料給客戶端,客戶端也需要繫結上面的位址,然後需要呼叫相應的函式sendto()
import若想伺服器接受資料,就要寫udp客戶端程式了socket
#udp
#建立乙個伺服器socket套接字
server_socket =socket.socket(socket.af_inet, socket.sock_dgram)
#伺服器的ip位址和埠號
address = ("
127.0.0.1
", 9999)
#伺服器繫結位址
server_socket.bind(address)
data = server_socket.recv(2048).decode("
utf-8")
#資料處理,這裡列印出來端
print("
伺服器接受的資料:
", data) # 伺服器接受的資料:我是乙個客戶端
import1. udp是tcp/ip協議族中的一種協議能夠完成不同機器上的程式間的資料通 信socket
#客戶端需要建立乙個套接字
client_socket =socket.socket(socket.af_inet, socket.sock_dgram)
#客戶端需要連線伺服器,必須先知道伺服器的ip位址和埠號
address = ("
127.0.0.1
", 9999)
#連線伺服器
client_socket.connect(address)
#這個資料是將要傳送的資料
data = "
我是乙個客戶端
"client_socket.sendto(data.encode(
"utf-8
"), address)
2. udp伺服器、客戶端
udp的伺服器和客戶端的區分:往往是通過請求服務和提供服務來進行區分
請求服務的一方稱為:客戶端
提供服務的一方稱為:伺服器
3. udp繫結問題
一般情況下,伺服器端,需要繫結埠,目的是為了讓其他的客戶端能夠正確傳送 到此程序
客戶端,一般不需要繫結,而是讓作業系統隨機分配,這樣就不會因為需要繫結的 埠被占用而導致程式無法執行的情
高階程式設計之網路程式設計(三)
io 模型 1 阻塞模型 fifo pipe read fgetc fgets fread recv recvfrom 以上獲取資料的函式預設都是阻塞方式接收資料。2 非阻塞模型 2.1 在開始階段的open函式部分調整 open fifo o rdonly o nonblock 函式 open r...
python程式設計高階
1 開閉原則 遵循開發封閉原則,雖然在這個原則是用的物件導向開發,但是也適用於函式式程式設計,簡單來說,它規定已經實現的功能 不允許被修改,但可以被擴充套件,即 封閉 已實現的功能 塊 開放 對擴充套件開發 2 可使用裝飾器實現開閉原則 裝飾器是不對原函式內部 進行修改的前提下,在外部增加一些功能,...
python高階程式設計
包和模組的概念及is和 的區別1.包 包含多個python檔案 模組的資料夾,並且資料夾中有乙個名稱為init.py的特殊宣告檔案,那麼這個資料夾就是乙個包 模組包 可以將大量功能相關的python模組包含起來統一管理,同樣也可以被其他模組通過import關鍵字引入重複使用封裝的模組和 2.模組 p...