1. 程式人生 > >python之socketserver實現並發

python之socketserver實現並發

方法 自己 接收 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實現並發