Socketserver模块
- socketserver主要是针对服务端来做的,所以对于客户端代码,并没有太多的改变
- 网络协议的最底层就是socket,基于原有socket模块,又封装了一层,就是socketserver
- socketserver 为了实现tcp协议,server端的并发
首先,你必须通过子类化 BaseRequestHandler
类并重载其 handle()
方法来创建一个请求处理句柄类;这个方法将处理传入的请求。 其次,你必须实例化某个服务器类,将服务器地址和请求处理句柄类传给它。 建议在 with
语句中使用该服务器。 然后再调用服务器对象的 handle_request()
或 serve_forever()
方法来处理一个或多个请求。 最后,调用 server_close()
来关闭套接字
Server
# ### 服务端
"""socketserver的提出 , 是为了允许在tcp协议下进行并发操作 ... """
import socketserver
# 子类化BaseRequestHandler
class MyServer(socketserver.BaseRequestHandler):
# 每一个客户端的请求连接后都会实例化MyServer
# 重载handle 处理收发数据的逻辑写在handle中;
def handle(self):
"""
print(self.request) # self.request <=> conn 链接对象实例化
print(self.client_address) # self.client_address <=> addr 套接字
"""
conn = self.request
while True:
res = conn.recv(1024)
res2 = res.decode()
print(res2)
conn.send( res2.upper().encode() )
# ThreadingTCPServer( ip端口号 , 自定义的类 ) 多线程请求框架
#实例化一个
server = socketserver.ThreadingTCPServer( ("127.0.0.1",9001) , MyServer )
# 处理多个请求
server.serve_forever()
Client
# ### 客户端
import socket
sk = socket.socket()
sk.connect( ("127.0.0.1",9000) )
# 处理收发数据逻辑
sk.close()
标签:handle,socket,Socketserver,self,server,模块,请求,socketserver
From: https://www.cnblogs.com/wbcde116/p/18085751