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

Antworten
Nachricht
Autor
pcAlko
Beiträge: 70
Registriert: 14. Mai 2007 19:27

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

#1 Beitrag von pcAlko » 17. Apr 2015 17:51

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
Zuletzt geändert von pcAlko am 18. Apr 2015 11:40, insgesamt 1-mal geändert.

Benutzeravatar
Janka
Beiträge: 3585
Registriert: 11. Feb 2006 19:10

#2 Beitrag von Janka » 18. Apr 2015 10:05

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
Ich vertonne Spam immer in /dev/dsp statt /dev/null.
Ich mag die Schreie.

pcAlko
Beiträge: 70
Registriert: 14. Mai 2007 19:27

#3 Beitrag von pcAlko » 18. Apr 2015 11:30

UPS -> ja, das war mein Denkfehler :oops:

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

Danke, Janka
8) pcAlko

Antworten