天天看點

基于tcp協定的套接字的通信

tcp協定:流式協定

服務端應該滿足的特性:
    1、一直對外提供服務
    2、并發地提供服務
           

服務端代碼(server.py):

import socket

# 1、買手機
phone = socket.socket(socket.AF_INET, socket.SOCK_STREAM)  # SOCK_STREAM=》TCP協定

# 2、插手機卡
phone.setsockopt(socket.SOL_SOCKET,socket.SO_REUSEADDR,1) #就是它,在bind前加

phone.bind(("127.0.0.1", 8080))  # 本地回環

# 3、開機
phone.listen(5)
print('starting %s:%s' %("127.0.0.1", 8080))

# 4、等電話連結=>連結循環
while True:
    conn, client_addr = phone.accept()
    print(client_addr)
    # 5、收/發消息=>通信循環
    while True:
        try:
            data = conn.recv(1024)  # 最大接收的位元組個數
            if len(data) == 0:  # 針對linux系統
                break
            print("收到的用戶端資料:", data.decode('utf-8'))
            conn.send(data.upper())
        except Exception:  # 針對windows系統
            break

    # 6、關閉
    conn.close()  # 挂電話
phone.close()  # 關機
           

用戶端(client.py):

import socket

# 1、買手機
phone = socket.socket(socket.AF_INET, socket.SOCK_STREAM)  # SOCK_STREAM=》TCP協定

# 2、撥電話
phone.connect(("127.0.0.1", 8080))

# 3、發/收消息=>通信循環
while True:
    msg = input(">>: ").strip()
    phone.send(msg.encode('utf-8'))
    data = phone.recv(1024)
    print("服務的傳回的資料:", data.decode('utf-8'))

# 4、關閉
phone.close()