首页 > 其他分享 >Socketserver模块

Socketserver模块

时间:2024-03-20 17:58:02浏览次数:287  
标签:handle socket Socketserver self server 模块 请求 socketserver

Socketserver模块

  1. socketserver主要是针对服务端来做的,所以对于客户端代码,并没有太多的改变
  2. 网络协议的最底层就是socket,基于原有socket模块,又封装了一层,就是socketserver
  3. 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

相关文章