1. 程式人生 > >socket客戶端連續訊息傳送

socket客戶端連續訊息傳送

一 服務端程式

# 匯入模組
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