Socketprogrammierung Python

Gast #2869408
Hi,

ich habe mich in den letzten Tagen mit Socketprogrammierung befasst und 
habe einen UDP Server gemacht, an welchem sich mehret Clients anmelden 
können um mit diesem zu kommunizieren. Der Server wartet also auf eine 
Nachricht der Clients und antwortet dann entsprechend darauf. Die 
Clients warten immer auf eine Nutzereingabe und verarbeiten diese.

Jetzt wollte ich fragen, ob es eine Möglichkeit gibt, dass die Clients 
sowohl eine Nutzereingabe als auch eine Nachricht von dem Server 
bearbeiten können. Der Client müsste also während er auf die 
Nutzereingabe wartet immer mal wieder gucken, ob was neues auf dem Port 
ankommt.

Danke für eure Hilfe!
Peter
Gast
danke, das hört sich schonmal gut an.
Durch das Abfragen von bestimmten Sockels durch select(), kann der 
Client also wissen an welchem sich Daten befinden. Aber der Client muss 
select() immer noch aktiv abfrage und kann nicht auf ankommende Daten 
reagieren, wenn er gerade auf eine Nutzereingabe wartet, oder? Gibt es 
sowas wie einen interrupt, der ausgelöst wird, wenn eine Nachricht von 
dem Server kommt?
Gast
Peter schrieb:
> danke, das hört sich schonmal gut an.
> Durch das Abfragen von bestimmten Sockels durch select(), kann der
> Client also wissen an welchem sich Daten befinden. Aber der Client muss
> select() immer noch aktiv abfrage und kann nicht auf ankommende Daten
> reagieren, wenn er gerade auf eine Nutzereingabe wartet, oder? Gibt es
> sowas wie einen interrupt, der ausgelöst wird, wenn eine Nachricht von
> dem Server kommt?

Wenn keine Daten da sind blockt select.
Gast
sorry, das habe ich nicht verstanden.
mein client wartet in der while (1): Schleife immer auf eine 
Nutzereingabe:
(data = raw_input('sobs> ')
Das heißt, wenn keine Nutzereingabe kommt, bleibt der Client dort im 
Porgramm hängen. Wie kann er dann auf Nachrichten vom Server reagieren?
Danke für deine Hilfe!
Gast
Peter schrieb:
> sorry, das habe ich nicht verstanden.
> mein client wartet in der while (1): Schleife immer auf eine
> Nutzereingabe:
> (data = raw_input('sobs> ')
> Das heißt, wenn keine Nutzereingabe kommt, bleibt der Client dort im
> Porgramm hängen. Wie kann er dann auf Nachrichten vom Server reagieren?
> Danke für deine Hilfe!

Vorher mit select prüüfen ob Daten da sind.

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 14 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.