Найти - Пользователи
Полная версия: Как вытащить данные из метода handle() в socketsеrver
Начало » Python для новичков » Как вытащить данные из метода handle() в socketsеrver
1
regnor
Добрый день. Подскажите, как получить переменную self.data из метода handle() в классе TCP_server_test(socketserver.BaseRequestHandler)? Пример взял из документации по socketserver. Спасибо.
 import threading
import socketserver
class TCP_server_test(socketserver.BaseRequestHandler):
    def handle(self):
        self.data = str(self.request.recv(1024), 'utf-8')
        if self.data:
            thread = threading.current_thread()
            response = bytes("Поток {} с номером {}: {}".format(thread.name, thread.ident, self.data), 'utf-8')
            self.request.sendall(response)
            print("Инфа клиента:", self.data)
            # Проверка сколько запущенных потоков
            print("Запущенные потоки")
            for thread in threading.enumerate():
                print(thread.name)
        else:
            print("Нет соединения с клиентом")
class ThreadedTCPServer(socketserver.ThreadingMixIn, socketserver.TCPServer):
    pass
if __name__ == '__main__':
    HOST, PORT = "127.0.0.1", 5000
    server = ThreadedTCPServer((HOST, PORT), TCP_server_test)
    #srv = TCP_server_test()
    while server:
        server_thread = threading.Thread(target=server.handle_request())
        server_thread.daemon = True
        server_thread.start()
        #print(srv.data)
Rodegast
server.data Но атрибут self.data должен быть определён до вызова метода handle по этому в класс TCP_server_test стоит добавить что то вроде этого
 def __init__(self):
     self.data = None
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB