Hilfe für neuling mit twisted

Sockets, TCP/IP, (XML-)RPC und ähnliche Themen gehören in dieses Forum
Antworten
marcel1275
User
Beiträge: 3
Registriert: Montag 9. November 2020, 11:47

hallo ,
ich bin total neu in pyton und hoffe hier hilfe zu finden .

auf github habe ich dieses script gefunden ,

Code: Alles auswählen

#!/usr/bin/python
from __future__ import with_statement, print_function
import sys
import os
import struct
import socket
import time

from twisted.internet.protocol import Protocol, ServerFactory
from twisted.internet.task import LoopingCall
from twisted.python import log
from twisted.application import service, internet
from twisted.python.log import ILogObserver, FileLogObserver
from twisted.python.logfile import DailyLogFile

def read_struct(fmt, data):
   return struct.unpack_from(fmt, data), data[struct.calcsize(fmt):]

class MW3Master(Protocol):
   MW3_MS_SERVER_MAGIC4CC = 0x424f4f42
   MW3_MS_CLIENT_MAGIC4CC = 0x434f4b45

   def dataReceived(self, data):
      (magic, version), data = read_struct("II", data)
      vList = self.factory.serverLists.setdefault(version, {})

      # ignore old clients
      if version == 17039742:
         self.transport.loseConnection()
         return

      # TODO Use Deferreds if anything in here takes a substantial amount of processing time,
      # else we will push up the server's response time.

      if magic == self.MW3_MS_SERVER_MAGIC4CC:
         (port, ), data = read_struct("H", data)
         ip = self.transport.getPeer().host
         #print("SERVER_MAGIC Ip: %s, Port: %d, Version: %08X" % (ip, port, version))
         vList[(ip, port)] = time.time()

      elif magic == self.MW3_MS_CLIENT_MAGIC4CC:
         #print("CLIENT_MAGIC Version: %08X" % (version,))
         reply = struct.pack("I", len(vList))
         for (ip, port) in vList.iterkeys():
            reply += struct.pack("IH", struct.unpack('>I', socket.inet_aton(ip))[0], port)
         #print('sending %r' % (reply,))
         self.transport.write(reply)
      self.transport.loseConnection()

MW3_MS_LISTEN_PORT = 27017

class MW3MasterFactory(ServerFactory):
   protocol = MW3Master
   lastPrune = 0

   def pruneList(self):
      now = time.time()
      for serverList in self.serverLists.values():
         for ((ip, port), last) in serverList.items():
            if last < self.lastPrune:
               del serverList[(ip, port)]
               log.msg('%s:%s expired (active servers left: %d)' % (ip, port, len(serverList)))
      self.lastPrune = now

   def startFactory(self):
      self.serverLists = {}
      LoopingCall(self.pruneList).start(30)

print("TeknoMW3 Master Server v1.0f")

application = service.Application('MW3 Master')
#application.setComponent(ILogObserver, FileLogObserver(DailyLogFile(os.path.join(os.path.dirname(__file__), 'mw3master.log'))).emit)

service = internet.TCPServer(MW3_MS_LISTEN_PORT, MW3MasterFactory())
service.setServiceParent(application)

nur leider bekomme ich es nicht ans laufen ,


bisher habe ich :
python 3.9 installiert
mir auf github twisted heruntergeladen https://github.com/twisted/twisted
versucht auf dieser seite https://twistedmatrix.com/documents/cur ... ctory.html schlauer zu werden


leider ohne erfolg ,hat jemand eine idee was ich falsch mache


danke
Sirius3
User
Beiträge: 17712
Registriert: Sonntag 21. Oktober 2012, 17:20

@marcel1275: interessant, was man so alles findet; hat vielleicht jemand weggeworfen, weil es kaputt ist.
Da niemand weiß, was Du genau gemacht hast, kann auch niemand sagen, was Du dabei falsch machst.
Wie startest Du das Programm, welche Fehlermeldung gibt es?
marcel1275
User
Beiträge: 3
Registriert: Montag 9. November 2020, 11:47

bisher habe ich das script in den twisted ordner kopiert , dann in den python IDLE geladen und run
als fehler bekomme ich
Traceback (most recent call last):
File "C:\Users\asus\AppData\Local\Programs\Python\Python39\mw3master .py", line 9, in <module>
from twisted.internet.protocol import Protocol, ServerFactory
ModuleNotFoundError: No module named 'twisted'
liegt wohl daran das ich nicht die richtigen twisted dateien habe , oder am falschen ort glaube ich
Benutzeravatar
__blackjack__
User
Beiträge: 13006
Registriert: Samstag 2. Juni 2018, 10:21
Wohnort: 127.0.0.1
Kontaktdaten:

@marcel1275: Man kopiert nicht irgendwelche Dateien in Ordner. Wenn das Modul `twisted` nicht gefunden wird, dann ist es nicht installiert. Das löst man dadurch, *das* man es installiert. Und das macht man in der Regel nicht durch das herunterladen von Quelltexten von Github sondern mit dem `pip`-Modul. Siehe Hauptwebseite vom Twisted-Projekt.
“Most people find the concept of programming obvious, but the doing impossible.” — Alan J. Perlis
marcel1275
User
Beiträge: 3
Registriert: Montag 9. November 2020, 11:47

Danke das hat geholfen ich installiere erst einmal alles richtig und dann schauen wir mal
Antworten