python - python serversocket TCPServer没有从BaseRequestHandler类调用handle()方法
问题描述
我有以下服务器端代码:你能帮我确定为什么我的句柄方法没有被调用吗?
启动服务器后,我使用 Packet Sender 将 tcp 数据包发送到 hosts:port 但他们没有调用 handle() 方法,我试图nc -z -v localhost 9806
查看我的 host:port 是否正常工作,它给了我连接成功的结果。但不能调用 handle() 方法。
class TCPNotificationServer(socketserver.TCPServer):
"""
Extends SocketServer.TCPServer with some logging, and a logfile and list for keeping track of
the received notifications
"""
def __init__(self, socket_data):
"""
Binds a socket to `socket_data` to receive TCP data
"""
self.socket_data = socket_data
socketserver.TCPServer.__init__(self, self.socket_data, TCPHandler)
self.inbound_notifications = []
self.logger = logging.getLogger(self.__class__.__name__)
def serve_on_thread(self):
"""
Start serving on a separate thread
"""
server_thread = threading.Thread(target=self.serve_forever)
# Exit the server thread when the main thread terminates
server_thread.daemon = True
server_thread.start()
self.logger.info('Server loop running in thread: %s', server_thread.name)
def clean_up(self):
"""
Close the socket
"""
self.server_close()
class TCPHandler(socketserver.BaseRequestHandler):
def handle(self):
self._logger.info("hello")
data = self.request.recv().strip()
print(data)
data, sender = self.request
self.server.logger.info(
'Handling incoming request: "%s" from client: "%s"', self.request, sender
)
self.server.inbound_notifications.append(data)
def main():
portss = RandomPortAllocator(9500, 9999)
socket_data = SocketData(
"localhost", portss.get_random_port()
)
print(socket_data)
server = TCPNotificationServer(socket_data)
i = 1
while i < 10:
time.sleep(10)
print('hi')
print(server.inbound_notifications)