Page 1 of 1

[gelöst] lesen zwischen server/client Anwendung von fgets() nach read() geändert

Posted: 17. Apr 2015 17:51
by pcAlko
Hallo Community!

Ich habe meine Server/Client Anwendung von fgets()/fputs() auf read/write geändert
der Grund dafür war eigentlich das ich im Web gelesen habe das fgets und fputs eher kontra produktiv wären, da diese funktionen einen Cash verwenden.

Schön und gut ...
hab jetzt aber das Problem dass der Server nicht mehr mitbekommt wenn der Client unverhofft abbricht.
bei fgets hats noch funktioniert (konnte auf eof() prüfen)

bei meinen Internet Recherchen
hab ich gelesen dass ich mit setsockopt SO_KEEPALIVE
mit TCP_KEEPIDLE, TCP_KEEPCNT und TCP_KEEPINTVL setzen soll

damit hatte ich aber keinen Erfolg
was macht jetzt fgets besser?
oder soll ich meine Anwendung jetzt wieder zurück portieren?
was meint Ihr?

Ich habe hier immer die besten Antworten bekommen.
Hoffe dieses Forum lebt noch :roll:

Danke im Voraus
für Eure Antworten
8) pcAlko

Posted: 18. Apr 2015 10:05
by Janka
Wenn du vom Client liest und null Bytes zurückbekommst, heißt das, dass die Verbindung weg ist. Hat der Client hingegen einfach nur keine neuen Daten, blockiert entweder der read()-Aufruf oder du bekommst -1 zurück und errno liefert EAGAIN.

Janka

Posted: 18. Apr 2015 11:30
by pcAlko
UPS -> ja, das war mein Denkfehler :oops:

dachte wenn 0 zurückkommt, kommt halt noch später was :D

Danke, Janka
8) pcAlko