Forum: PC-Programmierung Socketprogrammierung Python


von Peter (Gast)


Lesenswert?

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

von easy (Gast)


Lesenswert?

googlen nach "python select socket"

von Peter (Gast)


Lesenswert?

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?

von easy (Gast)


Lesenswert?

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.

von Peter (Gast)


Lesenswert?

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!

von easy (Gast)


Lesenswert?

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.

von Peter (Gast)


Lesenswert?

ahh...mir war nicht klar, dass man sowohl die Sockets als auch die 
Eingaben des Nutzers prüfen kann. Danke!

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.