TCP服务器如何实现并发

TCP服务端如何实现并发

import socket
from threading import Thread
from multiprocessing import Process

"""
服务器
    1.要有固定的IP和端口
    2.24小时不间断提供服务
    3.能够支持并发

"""

sever = socket.socket() #括号内不加参数 默认 TCP协议
sever.bind(('127.0.0.1',8080))  #固定ip地址端口号
sever.listen(5)  #半连接池


#将通讯循环单独封装成一个函数
def talk(conn):
    while True:
        try:
            data = conn.recv(1024)
            # 针对客户端断开连接后
            if len(data) == 0:break
            print(data.decode('utf-8'))
            conn.send(data.upper()) #给客户端回复
        except ConnectionResetError as e:
            print(e)
            break
    conn.close()
# 链接循环
while True:
    conn,addr = sever.accept()
    # 通信循环
    # while True:
    #     try:
    #         data = conn.recv(1024)
    #         # 针对客户端断开连接后
    #         if len(data) == 0:break
    #         print(data.decode('utf-8'))
    #         conn.send(data.upper()) #给客户端回复
    #     except ConnectionResetError as e:
    #         print(e)
    #         break
    # conn.close()
    """叫其他人来服务客户,起到并发的效果,"""
    t = Thread(target=talk,args=(conn,))
    
    
    '''客户端'''
    import socket

	client = socket.socket()
	client.connect(('127.0.0.1',8080))

	while True:
   		 	client.send(b'hello world')
    		data = client.recv(1024)
    		print(data.decode('utf-8'))
posted @ 2021-07-22 15:35  Aisa  阅读(339)  评论(0)    收藏  举报