python之socketserver實現並發
阿新 • • 發佈:2019-04-15
方法 自己 接收 inpu print 地址 soc 永遠 add
python之socketserver實現並發
服務端
import socketserver #socketserver模塊是用來實現並發 # 我們自己的類裏一定要繼承socketserver.BaseRequestHandler方法 # 裏面需要一個handle方法 # 每當客戶端來連接時,就會創建一個實例,實例與實例之間獨立 # 實例包含 # self.request:conn 作用:服務端收發信息的對象 # self.client_address:addr 作用:客戶端的ip地址 class Myserver(socketserver.BaseRequestHandler):def handle(self): print("conn is:"+str(self.request)) print("conn is:" + str(self.client_address)) #通訊循環 while True: #收信息 try: data = self.request.recv(1024).decode(‘utf-8‘) if data:print("客戶端發過來的信息:" + data) # 發信息 self.request.sendall(data.upper().encode(‘utf-8‘)) except Exception as e: continue if __name__=="__main__": #鏈接循環 #這個方法需要兩個參數,((ip,port),Myserver) s=socketserver.ThreadingTCPServer((‘127.0.0.1‘,8080),Myserver) #永遠運行 s.serve_forever() #socketserver.ThreadingTCPServer()方法循環不端的接收新的連接 #handle()方法與客戶端循環進行通訊
客戶端
import socket def main(): ip_port = (‘127.0.0.1‘, 8080) s2 = socket.socket(socket.AF_INET, socket.SOCK_STREAM) s2.connect(ip_port) # 連接服務端 while 1: data1 = input("-->").strip() if not data1:continue if data1 ==‘quit‘:break s2.sendall(data1.encode(‘utf8‘)) data2=s2.recv(1024) print(data2.decode("utf-8")) if __name__ == ‘__main__‘: main()
python之socketserver實現並發