Python Syntax "Sockets"

  • Hallo Zusammen!

    Ich versuche mich gerade als Anfänger an einem YT-Tutorial.

    External Content www.youtube.com
    Content embedded from external sources will not be displayed without your consent.
    Through the activation of external content, you agree that personal data may be transferred to third party platforms. We have provided more information on this in our privacy policy.



    Der Server und der Client funktionieren eigentlich einwandfrei. Allerdings kann ich bei der Eingabeaufforderung des "Clients" nur Zahlen und keinen Text eingeben.


    Hier der Quellcode, angelehnt an das Video:

    Für den Client:



    Für den Server:



    Das Video ist ca 4 Jahre oder älter. Hat sich da evtl. bei Python was geändert ?

    Ich hoffe ihr könnt mir weiterhelfen !


    Gruß aus dem Sauerland

    Edited 2 times, last by FalkoA ().


  • Hier einmal ein Screenshot der beiden Konsolen. In der Clientkonsole habe Ich eine "Testnachricht" eingegeben. Nach einer bestätigung mit Enter bricht der Client ab.

    Edited once, last by FalkoA ().

  • Hallo,

    Mit "Identierung" meinst du

    deine Einrückungen stimmen in deinem gezeigten Code nicht. Eingerückt wird immer mir 4 Leerzeichen.


    Ich würde mich an deiner Steller eher an die Dokumentation halten, die hat auch Beispielcodes.


    Ist auf deinem System nur Python3 installiert? Wenn noch Python2-Versionen zusätzlich installiert sind, dann ist dein Programmaufruf falsch. Der müsste dann 'python3 *.py' heißen.


    Grüße

    Dennis

    🎵🎸Die Nordsee schlägt dir ins Gesicht, trotzdem hast du verloren, du bist nicht weit gekommen, du läufst weiter nach vorn 🎵🎸

  • Hallo,


    welchen Fehler bekommst du und wo? IMHO sollte in Zeile 17 ein Fehler kommen, weil `clientsocket` nicht definiert ist.


    Und warum bist du der Meinung, dass du socket-Programmierung brauchst bzw. was hast du vor? socket Programmierung ist a) super low level und b) darum gibt es für viele Fälle besser Lösungen mit fertigen Protokollen.


    Gruß, noisefloor

  • Das ist eindeutig Python2. Die input-Funktion evaluiert die Eingabe. D.h. man müsste ein str-literal eingeben:


    Code
    PS C:\Users\Andre> py -2.7 -c "print input('Wie ist dein Name? ')"
    Wie ist dein Name? "Andre"
    Andre


    Das war bei Python2 von Anfang an eine Fehlkonzeption. Deswegen gab es noch raw_input, dass nichts evaluiert.

    Mit Python 3 ist die Funktion input durch raw_input ersetzt worden.


    Das dürfte nicht mehr lange dauern, bis Python2 auch aus den Distributionen restlos verschwindet.

    Momentan ist es noch bei Debian und paar anderen Distributionen standardmäßig mit dabei.


    Wir werden noch eine Zeit erleben, dass es keine Rolle mehr spielen wird, ob man python oder pythoh3 auf der Kommandozeile eingibt.

    Bei einigen Distributionen ist das schon der Fall.

  • Was da auch noch falsch ist, ist das übliche `recv(irgendwas)` und dann zu erwarten da sei a) eine vollständige ”Nachricht” drin oder zumindest kein UTF-8 was mitten in einer Multibytesequenz unterbrochen wurde.

    “If debugging is the process of removing software bugs, then programming must be the process of putting them in.” — Edsger Dijkstra

  • Ich danke euch für die ganzen Hinweise ! Es handelt sich tatsächlich um Python 2.7.13. Das scheint also die erste "Fehlerquelle" zu sein.


    Dennis89 : Ich hatte Probleme beim erstellen bei diesem Post, es sieht so aus, also ob die formatierung hierbei flöten gegangen ist.


    noisefloor : Es ist einfach ein Projekt für mich, um zu lernen. Und dieses Thema hörte sich für mich interesant an.


    Ich werde mich hier mit meinen Fortschritten melden.