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()
相关文章
相关标签/搜索