每一層都有相應的協議負責交換資訊或者協同工作
tcp/ip 協議 埠
tcp/udp協議
tcp
socket程式設計
import socket
# 模擬伺服器的函式
# 建立乙個伺服器端
def serverfunc():
# 1. 建立socket
# socket.af_inet:使用ipv4協議
# socket.sock_dgram使用udp通訊
sock = socket.socket(socket.af_inet, socket.sock_dgram)
# 2.繫結ip和port
# 127.0.0.1這個ip代表機器自身
# 7852 隨手指定的埠號
# 位址是乙個tuple型別(ip, port)
addr = ('127.0.0.1', 7852)
# 繫結位址和埠
sock.bind(addr)
# 3.接受對方訊息
# 等待方式為死等,沒有其他可能性
# recvfrom接受的返回值是乙個tuple,前一項表示資料,後一項表示位址
# recvfrom引數的含義是緩衝區大小
# rst = sock.recvfrom(500)
data, addr = sock.recvfrom(500)
print(data)
print(type(data))
# 傳送過來的資料時bytes格式,必須通過解碼才能得到格式的內容
# decode解碼函式預設引數是utf8
text = data.decode()
print(text)
print(type(text))
# 4.給對方返回訊息
# 傳送的訊息需要編碼成bytes格式
# encode預設也是utf8
# 注意編碼和解碼要一致
rsp = '我已經收到你的愛了,我也愛你'
data = rsp.encode()
sock.sendto(data, addr)
if __name__ == '__main__':
print("starting server......")
serverfunc()
print("ending server......")
**
import socket
# client端流程
# 1.建立通訊的socket
# 2.傳送內容到指定的伺服器
# 3.接受伺服器給定的反饋內容
def clientfunc():
# 建立連線socket
sock = socket.socket(socket.af_inet, socket.sock_dgram)
# 編碼訊息
text = 'i love you baby'
data = text.encode()
# 傳送訊息到伺服器端
sock.sendto(data, ('127.0.0.1', 7852))
# 接受伺服器的訊息,並對其解碼
data, addr = sock.recvfrom(200)
text = data.decode()
print(text)
if __name__ == '__main__':
clientfunc()
什麼實url(uniform resource locator)
超文字傳輸協議http
特點 http協議的特點及訪問流程-(上網流程**)
網路程式設計 Python高階語法 裝飾器
理論 裝飾器就是執行乙個函式之前首先執行裝飾器函式,python裝飾器就是用於拓展原來函式功能的一種函式,這個函式的特殊之處在於它的返回值也是乙個函式,使用python裝飾器的好處就是在不用更改原函式的 前提下給函式增加新的功能。1 單個裝飾器裝飾乙個函式 通用裝飾器看下面 def verify f...
網路程式設計 Python高階語法 閉包
什麼叫閉包?通俗來說就是函式裡巢狀函式,從表現形式來看,內部函式引用外部函式的作用域裡的變數,那麼內部函式就稱為閉包 舉例說明 1 閉包 函式塊 定義函式時的環境,inner就是函式塊,x就是環境 def outer x definnner y return x y return innner a ...
python高階程式設計 網路程式設計(二)
udp 使用者資料報協議,是乙個無連線的簡單的面向資料報的運輸層協議。udp不提供可靠性,它只是把應用程式傳給ip層的資料報傳送出去,但是並 不能保證它們能到達目的地。udp是一種面向無連線的協議,每個資料報都是乙個獨立的資訊,包括完整 的源位址或目的位址,它在網路上以任何可能的路徑傳往目的地,因此...