Hallo Leute,
ich bin auf der Suche nach Informationen wie ich eine socket-basierte Kommunikation (TCP/IP) fehlertoleranter machen kann. Das C Programm das ich geschrieben habe funktioniert zwar ganz prima, leider crasht es manchmal, wenn sich (einer) der Client(s) beendet. Außerdem friert die ganze Geschichte ein, wenn ich das Netzwerkkabel an einem Client ziehe, sowas muss es natürlich auch aushalten.
Kennt jemand von euch eine gute Quelle (ich kauf mir auch notfalls ein Buch...), wo ich mich in das Thema einlesen kann?
Viele Grüße, eszett
C Programm mit sockets und pthreads fehlertolerant machen ?
Beej's Guide to Network Programming [1]. Speziell Kapitel 6.
eagle
[1] http://www.ecst.csuchico.edu/~beej/guide/net/html/
eagle
[1] http://www.ecst.csuchico.edu/~beej/guide/net/html/
"I love deadlines. I love the whooshing sound they make as they fly by." -- Douglas Adams
so, serledigt
Danke vielmals,
die Webseite ist echt nicht schlecht, sollte man sich auf jedenfall mal durchlesen, wenn man was mit Sockets machen will, das vereinfacht die Sache dann doch ungemein.
Mein Problem hat sich sozusagen aufgelöst, nachdem ich mir mal select() genauer angeguckt habe. Im Endeffekt hatte es zwar nix mit der Netzwerkverbindung an sich zu tun (es war ein Deadlock, der beim Beenden einer Verbindung manchml entstand...)
viele Grüße, eszett
die Webseite ist echt nicht schlecht, sollte man sich auf jedenfall mal durchlesen, wenn man was mit Sockets machen will, das vereinfacht die Sache dann doch ungemein.
Mein Problem hat sich sozusagen aufgelöst, nachdem ich mir mal select() genauer angeguckt habe. Im Endeffekt hatte es zwar nix mit der Netzwerkverbindung an sich zu tun (es war ein Deadlock, der beim Beenden einer Verbindung manchml entstand...)
viele Grüße, eszett
- devilx
- Beiträge: 734
- Registriert: 26.08.2003 22:57:20
- Lizenz eigener Beiträge: GNU Free Documentation License
- Wohnort: Filderstadt
-
Kontaktdaten:
Tipp am Rande: Vermeide um Gottes Willen libpthread! Wenn du unbedingt Threads brauchst, greife zu der GNet Library. Die pthread lib wird wirklich nur bei Programmen wie "WineX" (nun "Cedega") verwendet, da es keine andere Moeglichkeit gibt. Ueberall, wo du sie durch einen Layer oder gar durch Forks ersetzen kannst, solltest du dies auch tun.
When you smile, the world smiles with you
When you fart, you stand alone
... a place full of dorkness
When you fart, you stand alone
... a place full of dorkness
pthreads
Naja, ich bin ja mit meinen PThreads nun auch nicht so 100% glücklich - wenn sich mir auch nicht erschließt, warum Du die libpthread so verteufelst - aber da das ganze auch noch teilweise harte Echtzeit mit RTAI/LXRT (http://www.rtai.org) ist, lässt es sich wirklich nicht vermeiden.
Grüße, eszett
P.S.: Mittlerweile läuft die Sache ja schön stabil...
Grüße, eszett
P.S.: Mittlerweile läuft die Sache ja schön stabil...
- devilx
- Beiträge: 734
- Registriert: 26.08.2003 22:57:20
- Lizenz eigener Beiträge: GNU Free Documentation License
- Wohnort: Filderstadt
-
Kontaktdaten:
Warum ich sie verteufel? Nun, dafuer gibt es viele Gruende. Ich habe selber anfangs viel mit PThreads gearbeitet, da sie zugegebener Maßen einen gewissen Komfort gegenueber Forks bieten. Jedoch ist mir dabei aufgefallen, dass bei geringsten (unscheinbaren) Fehlern die VM Size des Programmes gewaltig in die Hoehe steigt. Zudem ist GTK beispielsweise nicht pthread sicher, mit dem GNet/GThread funktioniert eine GTK Anwendung jedoch problemlos, ohne irgendwelche Mutexes fuer den Interface-Zugriff o.ae. Diese Layer bieten ihmo sehr nuetzliche Zusatzfunktionen und enthalten solch schwachsinnige Funktionen wie pthread_cancel nicht.
Wie gesagt, es gibt viele Gruende PThreads nur im aeussersten Notfall zu benutzen. Es kommt eben ganz auf die Anwendung welche Threads erfordert an.
Dies aber nur als Tipp am Rande. :)
Wie gesagt, es gibt viele Gruende PThreads nur im aeussersten Notfall zu benutzen. Es kommt eben ganz auf die Anwendung welche Threads erfordert an.
Dies aber nur als Tipp am Rande. :)
When you smile, the world smiles with you
When you fart, you stand alone
... a place full of dorkness
When you fart, you stand alone
... a place full of dorkness