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

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM