Netzwerkkommunikation analysieren

Heute ist Stammtischzeit:
Jeden Donnerstag 20:30 Uhr hier im Chat.
Wer Lust hat, kann sich gerne beteiligen. ;)
  • Es wäre ja auch denkbar, dass ( z.B. wie bei einer Tastaturmatrix ) gleichzeitig nur immer ein Eingang auf einen beliebigen Ausgang ausgegeben werden kann. Ein KVM Switch für z.B. 8 Monitore ist mit ca. 7000 € verdammt teuer, wenn man jetzt 2 dieser 8x8 Matrix Switch kaskadiert und per Tool steuern kann, wäre dass vlt. eine preiswerte Alternative.

  • Wenn du einen USB Host Switch findest, dann kannst du da was basteln. Von ACRONAME gibt es zb einen USB C 1:4 Switch. Kostet aber auch 500

  • Das mehrere Eingänge auf einen Ausgang nicht funktionieren kann ist mir klar. Ich hab mich nur gefragt, ob man so ein Teil auch wie einen KVM Switch ( ohne USB und Audio ) verwenden könnte. D.h. ich hab mehrere einzelne Eingangssignale welche ich ( gleichzeitig ! ) auf verschiedene einzelne Ausgänge schalten kann.

    Das funktioniert so, ja. Die Ein- und Ausgänge können alle gleichzeitig arbeiten, du musst dich nicht entscheiden. Und das Audio läuft auch über diesen Switch.


    Fipsi Der Code funktioniert nicht wie Du willst, es sei denn Du willst das Dein Code nur zufällig funktioniert. `send()` muss nicht alles senden, da musst Du `sendall()` verwenden. Und `recv()` empfängt wirklich garantiert nur 1 Byte. Da musst Du so lange `recv()` aufrufen bis Du tatsächlich sicher sein kannst die gesamte Nachricht empfangen zu haben.

    Oh, danke für die Hinweise. Ich hab das einfach so mal kurz auf dem Internet gesucht und hatte so im schnellen Test im Terminal problemlos funktioniert, sowohl lesen als auch schreiben. Dann werd ich da noch weiter gucken, bevor ich das so umsetz, danke dir :)

  • Na dann berichte mal, wenn es Fortschritt bei deinem Projekt gibt. :thumbup:

    So, ich weiß, das hat jetzt ein paar Monate gedauert, ich weiß und tut mir leid, es hatte sich bisher nicht rentiert, dass ich jetzt grad was bastel.

    Da ich jetzt in einer neuen Wohnung mit etwas besserer technischer Ausstattung bin, hab ich jetzt folgendes Script gebastel:

    Sobald mein Touchdisplay da ist, werd ich anfangen, eine Webseite und/oder ein Python-Script zur Steuerung des bisherigen Scripts schreiben.

    Liebe Grüße

    Fipsi

  • Fipsi Der Code ist fehlerhaft. Man kann nicht beliebige Teilstücke aus einem Datenststrom UTF-8 dekodieren, weil es sein kann, das man dabei ein Teilstück erwischt das nicht vollständig ist.

    Importe sollten nicht irgendwo mitten im Modul stehen. Die stehen üblicherweise am Anfang, damit man leicht sieht von was das Modul abhängig ist.

    Auf Modulebene sollte nur Code stehen der Konstanten, Funktionen, und Klassen definiert. Das Hauptprogramm steht üblicherweise in einer Funktion die `main()` heisst.

    Namen werden in Python klein_mit_unterstrichen geschrieben. Ausnahmen sind Konstanten (KOMPLETT_GROSS) und Klassen (PascalCase).

    Werte die man aus `sys.argv` holt sind keine Konstanten, sollten also auch nicht an Namen komplett in Grossbuchstaben gebunden werden.

    `str.encode()` ruft man auf dem Objekt auf, nicht auf dem Datentyp mit dem Objekt als Argument.

    Wobei man bei Konstanten Zeichenketten auch gleich die Bytekette als Literal schreiben könnte statt den Schritt unnötigerweise zur Laufzeit zu machen.

    Python hat einen Typ für Wahrheitswerte (`bool`) mit den Werten `True` und `False`. Da sollte man keine Zahlen für missbrauchen.

    Warum `get` und `read` bei `getStatus()` und `readConfig()`? Beide machen doch grundsätzlich etwas *sehr* ähnliches, da sollte man entweder `get` oder `read` bei beiden verwenden.

    Wobei beides aber auch etwas irreführend ist, denn bei beiden Namen erwartet der Leser, dass die Funktionen den geholten/gelesenen Wert als Rückgabewert haben und nicht den einfach per `print()` ausgeben.

    In einer Funktion `data` und `data_` als Namen zu verwenden ist verwirrend.

    `readConfig()` enthält viermal fast gleichen Code, der zudem noch mit dem Inhalt `getStatus()` fast identisch ist. Da sollte man eine gemeinsame Funktion heraus ziehen und eventuell auch eine Schleife für den Aufruf in `readConfig()` verwenden.

    Ungetestet:

    “Dawn, n.: The time when men of reason go to bed.” — Ambrose Bierce, “The Devil's Dictionary”

Jetzt mitmachen!

Du hast noch kein Benutzerkonto auf unserer Seite? Registriere dich kostenlos und nimm an unserer Community teil!