socketserver及相關的類 (處理socket服務端)+ event事件的使用

編寫簡單的套接字服務器並不難,然而,若是要建立的並不是簡單服務器,還要求助於服務器模塊。服務器

模塊SocketServer是標準庫提供的服務器框架的基石,這個框架包括好多服務器,他們基本服務器的基礎上添加了各類功能。框架

SocketServer包含4個基本的服務器:TCPServer(支持TCP套接字流),UDPServer(支持udp數據報套接字)...socket

 

服務端代碼線程

# import socketserver
#
# from threading import current_thread
#
# class MyHandler(socketserver.BaseRequestHandler):
# def handle(self):
# print(self.server)
# print(self.client_address)
# print(self.request)
# print(current_thread())
#
# while True:
# data = self.request.recv(1024)
# print(data.decode('utf-8'))
# self.request.send(data.upper())
#
#
# server = socketserver.ThreadingTCPServer(('127.0.0.1',8090),MyHandler)
# server.serve_forever()

 

 

客戶端代碼code

from socket import *

client = socket(AF_INET,SOCK_STREAM)

client.connect(('127.0.0.1',8090))

while True:
msg = input('>>: \n').strip()
client.send(msg.encode('utf-8'))

data = client.recv(1024)
print(data.decode('utf-8'))

 

------------------------------分割線-------------------------------------------------------------server

 

 

# 事件是什麼?# 某件事情發生的信號# 用來幹什麼?# 在線程問間通信,然而線程原本就能通信# 做用只有一個就是簡化代碼# event 線程通信,僅僅用於簡化代碼,說的就是代替一個bool類型和一個if判斷from threading import Thread,Event# set() 將狀態修改成True# wait()等待轉態爲True才繼續執行import timeevent = Event()def server_task():    print('正在啓動')    time.sleep(4)    print('啓動成功等待鏈接')    event.set()def client_task():    event.wait()    print('鏈接成功')t1 = Thread(target=server_task)t1.start()t2 = Thread(target=client_task)t2.start()t1.join()t2.join()
相關文章
相關標籤/搜索