通过socketserver来实现多线程:
server端:
'''
Created on 2018年5月23日
@author: hcl
'''
import socketserver
class MyTCPHandler(socketserver.BaseRequestHandler):
def handle(self):
while True:
try:
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("err:", e)
break
if __name__ == "__main__":
HOST,PORT = "localhost",50000
# server = socketserver.TCPServer((HOST,PORT),MyTCPHandler)
server = socketserver.ThreadingTCPServer((HOST,PORT),MyTCPHandler)
server.serve_forever()
client端:
import socket
client = socket.socket()
client.connect(("localhost",50000))
while True:
msg = input(">>>:")
client.send(msg.encode())
recv_data = client.recv(1024)
print(recv_data.decode())
client.close()
server端输出:
127.0.0.1wrote:
b'lsdla'
127.0.0.1wrote:
b'ajls'
127.0.0.1wrote:
b'alsdlk'
127.0.0.1wrote:
b'akdsjk'
127.0.0.1wrote:
b'skdj'
127.0.0.1wrote:
b'asdl'
127.0.0.1wrote:
b'asdjkk'
err: [WinError 10054] 远程主机强迫关闭了一个现有的连接。
client1 输出:
>>>:lsdla
LSDLA
>>>:alsdlk
ALSDLK
>>>:skdj
SKDJ
>>>:
client2 输出:
>>>:ajls
AJLS
>>>:akdsjk
AKDSJK
>>>:asdl
ASDL
>>>:asdjkk
ASDJKK
>>>:
六、有兴趣接电子设计相关小型项目的请加下群,每个项目一般在1000元以内,非诚勿扰