У меня есть следующий серверный код: Не могли бы вы помочь мне определить, почему мой метод handle не вызывается?
После запуска сервера я использую Packet Sender для отправки пакетов tcp на хосты: порт, но они не вызывают метод handle (), я попытался nc -z -v localhost 9806
, чтобы проверить, работает ли мой порт host: он дает мне успешное соединение. но не могу вызвать метод 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)