服務端代碼
import socketserver
# 定義一個類
class MyServer(socketserver.BaseRequestHandler):
# 如果handle方法出現報錯,則會進行跳過.但是setup方法和finish方法無論如何都會進行執行的.
def setup(self):
print("首先執行setup")
def handle(self):
print("然后執行handle")
conn = self.request # 定義連接變數
conn.send(("連接成功,客戶端埠:%s" % (conn.getpeername()[1])).encode()) # 向客戶端發送訊息
while True:
data = https://www.cnblogs.com/liuhaidon/p/conn.recv(1024) # 接收客戶端訊息
print(data.decode())
if not data or data == b'exit':
break
conn.send(data)
conn.close()
def finish(self):
print("最后執行finish")
if __name__ == "__main__":
# 創建多執行緒實體
server = socketserver.ThreadingTCPServer(("127.0.0.1", 3120) ,MyServer)
# 開啟異步多執行緒,等待連接
server.serve_forever()
客戶端代碼
import socket
client = socket.socket()
client.connect(("127.0.0.1", 3120))
while True:
data = https://www.cnblogs.com/liuhaidon/p/client.recv(1024)
print(data.decode())
msg = input("請輸入要發送的資訊...")
client.send(msg.encode())
if not msg or msg == "exit":
break
client.close()
為什么是非阻塞通信呢?
原來的tcp通信只能跟一個客戶端連接,當另一個客戶端來連接的時候,就會阻塞連接不上,socketserver模塊采用的就是多執行緒,
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/194777.html
標籤:Python
上一篇:Python_面向物件進階
