进程线程实现TCP并发——作业

# 服务端
from threading import Thread
from socket import *


def talk(conn, addr):
    print(addr, '连接成功!')
    conn.send('========= 欢迎来到天上人间洗浴按摩中心 ========='.encode('utf-8'))
    while True:
        try:
            client_res = conn.recv(1024)
            if len(client_res) == 0: break
            if client_res.decode('utf-8') == 'tank':
                conn.send('工号9521 tank为您服务'.encode('utf-8'))
            elif client_res.decode('utf-8') == 'egon':
                conn.send('工号9527 egon为您服务'.encode('utf-8'))
            elif client_res.decode('utf-8') == 'jason':
                conn.send('工号9523 jason为您服务'.encode('utf-8'))
            else:
                conn.send('抱歉尊贵的顾客,我店无此员工哦'.encode('utf-8'))
        except ConnectionResetError as e:
            print(e)
            break
    conn.close()


if __name__ == '__main__':
    server = socket() # 括号内不传参默认是TCP(AF_INET SOCK_STREAM)
    server.bind(('127.0.0.1', 8080))
    server.listen(5)
    while True:
        print('正在连接...')
        conn, addr = server.accept()
        t = Thread(target=talk, args=(conn, addr))
        t.start()

# 客户端
from socket import *

client = socket(AF_INET, SOCK_STREAM)
client.connect(('127.0.0.1', 8080))
server_res = client.recv(1024)
print(server_res.decode('utf-8'))
while True:
    cmd = input("请指定服务人选[jason,egon,tank]:").strip()
    if len(cmd) == 0:continue
    if cmd == 'exit':break
    client.send(cmd.encode('utf-8'))
    cmd_res = client.recv(1024)
    print(cmd_res.decode('utf-8'))

client.close()

猜你喜欢

转载自www.cnblogs.com/guanxiying/p/12769154.html