socket客戶端連續訊息傳送
阿新 • • 發佈:2018-12-16
一 服務端程式
# 匯入模組 import socket import random # 建立例項 sk = socket.socket() # 定義需要繫結的ip和埠 ip_port = ("127.0.0.1", 8888) # 繫結監聽 sk.bind(ip_port) # 最大連線數 sk.listen(5) # 不斷迴圈,不斷接收資料 while True: # 提示資訊 print("正在進行等待接收收據......") # 接收資料 conn, address=sk.accept() # 定義資訊 msg = "連線成功!" # 返回資訊 # python 3.x以上,網路資料的傳送和接收都是byte型別 # 如果傳送的資料是str型別,則需要進行編碼 conn.send(msg.encode()) # 不斷接收客戶端發來的資訊 while True: # 接收客戶端訊息 data = conn.recv(1024) # 列印資料 print(data.decode()) # 接收退出指令 if data == b'exit': break # 處理客戶端資料 conn.send(data) # 傳送隨機數 conn.send(str(random.randint(1,1000)).encode()) # 主動關閉 conn.close()
二 客戶端程式
# 匯入模組 import socket # 建立例項 client =socket.socket() #訪問的服務端的ip和埠 ip_port=("127.0.0.1",8888) # 連線主機 client.connect(ip_port) #定義一個迴圈,不斷髮送訊息 while True: # 接收主機資訊 data = client.recv(1024) # 列印接收的資料 # 此處byte型資料特指python3.x以上 print(data.decode()) # 輸入傳送的訊息 msg_input=input("請輸入傳送的訊息") # 訊息傳送 client.send(msg_input.encode()) if msg_input=="exit": break data = client.recv(1024) print(data.decode())
三 執行結果
1 服務端
E:\Python\python_lab\venv\Scripts\python.exe E:/Python/python_lab/socketserver.py
正在進行等待接收收據......
cpu 80%
mem 70%
exit
正在進行等待接收收據......
2 客戶端
E:\Python\python_lab\venv\Scripts\python.exe E:/Python/python_lab/socket_clent.py
連線成功!
請輸入傳送的訊息cpu 80%
cpu 80%
719
請輸入傳送的訊息mem 70%
mem 70%
773
請輸入傳送的訊息exit
Process finished with exit code 0