python高階程式設計 網路程式設計(二)

2022-05-10 20:50:09 字數 1683 閱讀 7983

udp --- 使用者資料報協議,是乙個無連線的簡單的面向資料報的運輸層協議。

udp不提供可靠性,它只是把應用程式傳給ip層的資料報傳送出去,但是並 不能保證它們能到達目的地。

udp是一種面向無連線的協議,每個資料報都是乙個獨立的資訊,包括完整 的源位址或目的位址,它在網路上以任何可能的路徑傳往目的地,因此能否 到達目的地,到達目的地的時間、次序以及內容的正確性都是不能被保證的 

udp通訊過程:

udp通訊比較簡單

先寫乙個udp伺服器,一般步驟如下:

1、首先是要建立乙個socket套接字:socket()

3、只有伺服器和客戶端繫結相同的ip位址,伺服器和客戶端才可以互相接收資料和傳送資料,常理來想,伺服器是乙隻被開啟的,也是一直接受資料,所以在接受資料的過程中,我們需要無限迴圈:recv()

4、如果我們要傳送資料給客戶端,客戶端也需要繫結上面的位址,然後需要呼叫相應的函式sendto()

import

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) # 伺服器接受的資料:我是乙個客戶端

若想伺服器接受資料,就要寫udp客戶端程式了

import

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)

1. udp是tcp/ip協議族中的一種協議能夠完成不同機器上的程式間的資料通 信 

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...