Hallo,
hab ein client server system, welches über einen Socket kommuniziert.
Kann ich irgendwie herausfinden, an welcher Position der Socketqueue die Clientanfrage eingegliedert wird?
Danke,
Flyingfish
Socket Queue Position prüfen.
-
- User
- Beiträge: 33
- Registriert: Sonntag 23. Januar 2005, 23:36
Nun ja, jeder erstellte Socket kann ja eine Anzahl von Verbindungen queuen und arbeitet diese dann ab. Wenn ein Client nun eine neue Verbindung aufbaut, wollte ich gerne wissen, wieviele Verbindungen es schon gibt.
Gruss,
Flyingfish
Gruss,
Flyingfish
Geht soviel ich weiss nicht. Habe jedenfalls nichts in den man-pages zu `sockets` gefunden. Und wenn es von C aus schon nicht geht...flyingfish hat geschrieben:Nun ja, jeder erstellte Socket kann ja eine Anzahl von Verbindungen queuen und arbeitet diese dann ab. Wenn ein Client nun eine neue Verbindung aufbaut, wollte ich gerne wissen, wieviele Verbindungen es schon gibt.
Wozu brauchst Du die Information denn?
-
- User
- Beiträge: 773
- Registriert: Mittwoch 5. November 2003, 18:06
- Wohnort: Schweiz
- Kontaktdaten:
öhm der server horcht ja auf einem port, wenn eine verbindung aufgebaut wird erstellt er ein socket. normalerweise queued der server bis max 5 clients gleichzeitig, nacher wird ein socket erstellt. du musst einfach all diese erstellten sockets zählen, dann hast du die anzahl aktiven verbindungen.
Gruss
Gruss
-
- Python-Forum Veteran
- Beiträge: 16025
- Registriert: Freitag 20. Juni 2003, 16:30
- Kontaktdaten:
Das erinnert mich aber eher an den Twisted/Asyncore-Ansatz mit Protocols und Factories, so das die Factory auf dem Post lauscht und wenn sich jemand verbindet wird eine Protocol-Instanz gestartet und ihr diese Anfrage übergeben.. aber sowas meist du doch nicht, oder?
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
Ich hatte die Frage so verstanden, dass das Queueing/Puffern von Verbindungsanfragen beim Betriebssystem gemeint war. Man kann bei Server-Sockets angeben, das sich das Betriebssystem eine vorgegebene Anzahl von Verbindungsversuchen merkt solange man gerade eine Anfrage bearbeitet und diese "ge-queuet-en" Verbindungen dann bei den folgenden `listen()` Aufrufen zurückgibt.rayo hat geschrieben:öhm der server horcht ja auf einem port, wenn eine verbindung aufgebaut wird erstellt er ein socket. normalerweise queued der server bis max 5 clients gleichzeitig, nacher wird ein socket erstellt. du musst einfach all diese erstellten sockets zählen, dann hast du die anzahl aktiven verbindungen.
Das ist Hauptsächlich dazu da, damit in der kurzen Zeit während der `listen()` Aufruf die Anfrage zum Beispiel an einen Thread zur Bearbeitung übergibt, keine Clients abgewiesen werden. Sonst hätte man bei Servern mit einer hohen Anfragerate dauernd Fehlversuche bei den Clients.
Falls das nicht die Frage war, dann bitte präzisieren...
-
- User
- Beiträge: 33
- Registriert: Sonntag 23. Januar 2005, 23:36
Hallo Leute,
ja Blackjack, das war meine Frage. Sobald die Anfrage da ist, wird ein C Block bearbeitet, und somit gibt es wartezeiten von circa 1 Minute.
Aber vielleicht sollte ich noch eine Queue einfügen und das C Programm in einem Thread laufen lassen. Ist vielleicht ansonsten etwas unsauber.
Was meint Ihr?
Gruss,
Flyingfish
ja Blackjack, das war meine Frage. Sobald die Anfrage da ist, wird ein C Block bearbeitet, und somit gibt es wartezeiten von circa 1 Minute.
Aber vielleicht sollte ich noch eine Queue einfügen und das C Programm in einem Thread laufen lassen. Ist vielleicht ansonsten etwas unsauber.
Was meint Ihr?
Gruss,
Flyingfish
Eine Minute ist schon ziemlich lang. Kommt natürlich darauf an wieviele Clients Du ewartest, wenn das nur 1-2 pro Minute sind, dann würde das so wohl noch ganz gut funktionieren, aber wenn es skalieren soll, dann sind Arbeits-Threads und eine Queue wohl die bessere Lösung.flyingfish hat geschrieben:ja Blackjack, das war meine Frage. Sobald die Anfrage da ist, wird ein C Block bearbeitet, und somit gibt es wartezeiten von circa 1 Minute.
Aber vielleicht sollte ich noch eine Queue einfügen und das C Programm in einem Thread laufen lassen. Ist vielleicht ansonsten etwas unsauber.
Was meint Ihr?
Dann kannst Du auch ganz einfach mitzählen wieviele Clients gerade bearbeitet werden oder noch in der Queue stecken.
-
- User
- Beiträge: 33
- Registriert: Sonntag 23. Januar 2005, 23:36
Alles klar, dann werde ich das wohl so machen.
Herzlichen Dank euch allen!
Herzlichen Dank euch allen!