Thread TCP Client - Socket lesen und schliessen (29 answers)
Opened by snarf at 2004-08-18 19:50

snarf
 2004-08-24 12:37
#37553 #37553
User since
2003-08-14
77 Artikel
BenutzerIn
[default_avatar]
Hallo Reinhard,

... sorry wenn ich mich bislang nicht weiter geäußert habe - war unverhofft untewergs.

AFAIK ist Dein Verständnis von select korrekt, soll heißen dass select nur grundsätzlich überprüft, ob von einem Socket gelesen werden kann (oder ob es sonst irgendwie geblockt wird).

Da scheinbar Dein Server den Socket nicht eigenständig schließt (bzw. dies wohl vom Client erwartet), bleibst Du natürlich hängen .... von einem offenen Socket kann man immer lesen (nur ob da auch was ansteht, ist ja bekanntlich fraglich).

Small workaround:
- vor der while-Schleife einmal die Systemzeit als Epoch erfragen
- innerhalb der Schleife eine Abfrage, ob eine bestimmte Zeit vergangen ist (d.h. Du z.B. seit ca. 30 Sekunden die Schleife durchläufst)
- if so: mit last aus der while-Schleife raus, Socket schließen, fertig.

Dieser Workaround bietet Dir natürlich keine Möglichkeit, nach dem Verbleib der "restlichen" Bytes zu forschen ... aber immerhin kannst Du Dein Skript mehr oder minder sauber beenden.

Gruss, Dirk

View full thread TCP Client - Socket lesen und schliessen