python serversocket TCPServer не вызывает метод handle () из класса BaseRequestHandler - PullRequest
0 голосов
/ 22 апреля 2020

У меня есть следующий серверный код: Не могли бы вы помочь мне определить, почему мой метод 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)
...