TCP服务端实现并发

  • 服务端
# 封装过

import socket
from threading import Thread

# 套字节 TCP协议
server = socket.socket()
# 绑定ip与port
server.bind(('127.0.0.1', 8080))
# 连接池    子线程 客户端连接 不受连接池限制所影响!
server.listen(5)

# 执行程序
def talk(sock):
    # 循环接收客户端数据
    while True:
        # 异常捕获
        try:
            # 固定每次接收数据,
            data = sock.recv(1024)
            # 判断接收是否为空
            if len(data) == 0: break
            # 将接收数据解码
            print(data.decode('utf8'))
            # 发送数据
            sock.send(data + b'gun dan!')
        except ConnectionResetError as e:
            print(e)
            break
    # 结束套字节
    sock.close()

# 调用执行程序
while True:
    # 循环 被动客户端连接 并返回(sock,addr)sock是通信,发送数据与接收数据
    # addr是客户端地址
    sock, addr = server.accept()
    print(addr)
    # 开设多进程或者多线程
    t = Thread(target=talk, args=(sock,))
    # 执行打开子线程
    t.start()
  • 客户端
import socket

# 客户端 套字节
client = socket.socket()
# 连接服务端ip与port
client.connect(('127.0.0.1', 8080))


while True:
    # 获取用户输入
    msg = input('>>>')
    # 发送数据 并编码
    client.send(msg.encode('utf8'))
    # 接收服务端数据
    data = client.recv(1024)
    # 解码并打印
    print(data.decode('utf8'))

image

posted @ 2022-01-15 00:26  AlexEvans  阅读(96)  评论(0编辑  收藏  举报