網絡編程之socketserver初識
阿新 • • 發佈:2018-02-23
div client nec -m order put __name__ arm 對象 網絡編程之socketserver初識
Server
#!/usr/bin/env python # @Author : "Wjl" # @Date : 2017/12/22 # @Time : 11:07 # @SoftWare : PyCharm # @File : Server端並發聊天_Server.py import socketserver """ socketserver模塊是python為我們寫好的一個封裝了網絡操作相關的模塊 比我們自己手寫socket方便 """ class MyServer(socketserver.BaseRequestHandler): #View Code必須繼承socketserver.BaseRequestHandler def handle(self): # 必須重寫父類的handle方法,我們的邏輯就寫在handle方法中 print("服務端啟動...") while True: conn = self.request # self.request 就等於 TcpSocket.accept() 返回的socket對象 print(self.client_address) # self.client_address 就等於 TcpSocket.accept 返回的addr元組while True: # 將接收到的數據原路返回 client_data = conn.recv(1024) print(str(client_data, "utf8")) print("waiting...") conn.sendall(client_data) conn.close() if __name__ == ‘__main__‘: server = socketserver.ThreadingTCPServer((‘127.0.0.1‘, 8888), MyServer) # 要實現並發就必須調用ThreadingTCPServer server.serve_forever() # 啟動
Client
#!/usr/bin/env python # @Author : "Wjl" # @Date : 2017/12/22 # @Time : 11:07 # @SoftWare : PyCharm # @File : Server端並發聊天_Client.py import socket TcpSocket = socket.socket() TcpSocket.connect((‘127.0.0.1‘, 8888)) while True: user_input = input(‘>>> ‘) if user_input == ‘q‘: break TcpSocket.send(user_input.encode(‘utf-8‘)) data = TcpSocket.recv(1024) print(data.decode(‘utf-8‘)) TcpSocket.close()View Code
網絡編程之socketserver初識