Python Twisted / Reactor не может отправить сообщение на сервер / клиент

#python #server #client #twisted #p2p

#python #сервер #клиент #twisted #p2p

Вопрос:

Я пытаюсь создать отправителя сообщений на основе P2P с помощью twisted, но, к сожалению, я не могу отправить свое сообщение от клиента, чтобы получить подключенные IP-адреса. Например, вызывается функция startProtocol(), но данные не передаются на сервер. Есть идеи, что я делаю не так? Заранее спасибо.

Сервер

 from twisted.internet.protocol import DatagramProtocol
from twisted.internet import reactor
from random import randint


class Server(DatagramProtocol):
    def __init__(self):
        self.clients = set()
        print("Server initialized")

    def datagramRecieved(self, datagram, addr):
        datagram = datagram.decode("utf-8")
        print("Datagram recieved" datagram)
        if datagram == "ready":
            adresses = "n".join([str(x) for x in self.clients])

            self.transport.write(adresses.encode('utf-8'), addr)
            self.clients.add(addr)


if __name__ == '__main__':
    reactor.listenUDP(9999, Server())
    reactor.run()
 

Клиент

 from twisted.internet.protocol import DatagramProtocol
from twisted.internet import reactor
from random import randint


class Client(DatagramProtocol):
    def __init__(self, host, port):
        if host == "localhost":
            host = "127.0.0.1"
        self.id = host, port
        self.address = None
        self.server = '127.0.0.1', 9999
        print("Working on id:", self.id)

    def startProtocol(self):
        print("Called startProtocol")
        self.transport.write("ready".encode("utf-8"), self.server)

    def datagramRecieved(self, datagaram, addr):
        datagaram = datagaram.decode('utf-8')

        if addr == self.server:
            print("Choose a client from thesen", datagaram)
            addresses = datagaram.split('n')
            self.address = input("write host:"), int(input("write port"))
            reactor.callInThread(self.send_message)
        else:
            print(addr, ":", datagaram)

    def send_message(self):
        while True:
            self.transport.write(
                input("Uzeneted:").encode('utf-8'), self.address)


if __name__ == '__main__':
    port = randint(1000, 5000)
    reactor.listenUDP(port, Client('localhost', port))
    reactor.run()