編寫簡單的套接字服務器並不難,然而,若是要建立的並不是簡單服務器,還要求助於服務器模塊。服務器
模塊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()