python 多线程 并发socket实例

sever side:

import socketserver
class MyTCPHandler(socketserver.BaseRequestHandler):
    def handle(self):
        '''try内的代码就是要实现的功能,目前是实现小写转大写,可以自定义,
        try是在客户端结束时不报错
        '''
        try:
             while True:
                self.data = self.request.recv(1024).strip()
                print("{} wrote:".format(self.client_address[0]))
                print(self.data)
                self.request.sendall(self.data.upper())
        except ConnectionResetError as e:
            print(e)
if __name__ == "__main__":
    HOST, PORT = "localhost", 6969
    server = socketserver.ThreadingTCPServer((HOST, PORT), MyTCPHandler)
    server.serve_forever()
View Code

client side:

import socket
sock = socket.socket()
#sock.connect(('120.78.197.182',51102))
sock.connect(('localhost',6969))
flag = False
while not flag:
    data = input(">>:").strip()
    if data == "b":flag = True
    if len(data) == 0:continue
    sock.send(data.encode())
    recv_data = sock.recv(8096)
    print("recv:",recv_data.decode())

    # recv_data = b''
    # recv_len = 0
    # cmd_length = int(sock.recv(8096).decode())
    # cli_ack = sock.send(b'ack')
    # print('cmd_len',cmd_length)
    # while recv_len != cmd_length:
    #     data = sock.recv(1024)
    #     recv_data += data
    #     recv_len += len(data)
    # print('recv:',recv_data.decode())
sock.close()
View Code
原文地址:https://www.cnblogs.com/alex-hrg/p/8960971.html