Seite 1 von 2

Re: Simpler Chat (Server-Client) Multithreading

Verfasst: Mittwoch 6. Februar 2019, 13:54
von Daniel26
Wenn du Kontrolle über beide Seiten der Kommunikation hast, dann empfehle ich dir nachdrücklich, eine bestehende Lösung zu benutzen. ZeroMQ oder nanomsg. Letzteres ist mein aktueller Favorit. Die nehmen dir viel von der Komplexität ab, die dir überhaupt nicht bewusst ist.
Ich gestalte nur den Server. Der "Client" kann irgendwas sein. Zum testen benutze ich nen Telnet-Client.
Es geht um ein Script, das Anfragen auf einem Port annimmt und drauf hin die passenden Werte ausliefert.

Gruß

Re: Simpler Chat (Server-Client) Multithreading

Verfasst: Mittwoch 6. Februar 2019, 14:03
von Sirius3
@Daniel26: bei "Telnet" also dann ein zeilenbasiertes Protokoll. Wie schon geschrieben, ist dann der Einstieg über die Pythondokumentation zu asyncio.

Re: Simpler Chat (Server-Client) Multithreading

Verfasst: Mittwoch 6. Februar 2019, 14:34
von __blackjack__
Alternativ hätten `socket`-Objekte eine Methode um sich ein Dateiobjekt geben zu lassen, wo man dann auch Zeilen lesen kann ohne sich selbst um die ganzen Details kümmern zu müssen. Eventuell möchte man sich dazu noch etwas aus dem `io`-Modul zum ”wrappen” nehmen, damit es eine Text- und keine Bytes-Datei ist.

Re: Simpler Chat (Server-Client) Multithreading

Verfasst: Mittwoch 6. Februar 2019, 17:23
von __deets__
Daniel26 hat geschrieben: Mittwoch 6. Februar 2019, 13:54
Ich gestalte nur den Server. Der "Client" kann irgendwas sein. Zum testen benutze ich nen Telnet-Client.
Es geht um ein Script, das Anfragen auf einem Port annimmt und drauf hin die passenden Werte ausliefert.
Naja, aber du kannst ja an den client auch eine Vorgabe machen. Denn wie gesagt - automatisch passiert da nichts sinnvolles. telnet/newline ist das absolute Mininmum, und wenn das fuer dich reicht - ok. Aber wehe da kommen mal binaere Daten ins Spiel, dann hast du den Salat und musst das ganze irgendwie per base64 oder so uebertragen. Damit ja kein Zeilenende-Zeichen in die Daten kommt.

Re: Simpler Chat (Server-Client) Multithreading

Verfasst: Mittwoch 6. Februar 2019, 18:30
von __blackjack__
Oder den HTTP-Weg, eine Textzeile, die sagt wie viele Bytes folgen, und dann exakt so viele Bytes senden/empfangen. Wobei dann, wenn das Protokoll auch „stateless“ sein darf, natürlich wieder gilt: Nichts selbst basteln wenn es das schon fertig gibt, und HTTP gibt es schon fertig. :-)

Re: Simpler Chat (Server-Client) Multithreading

Verfasst: Montag 11. Februar 2019, 07:14
von ThomasL
Daniel26 hat geschrieben: Mittwoch 6. Februar 2019, 10:31 Gibts denn irgendwo ein gutes Tutorial wie man mit Sockets arbeitet?
Bin gerade auf dieses Tutorial gestossen und habe mich an diese Unterhaltung erinnert.
https://realpython.com/python-sockets/
Über die Qualität kann ich nichts sagen.