[C] Serveranwendung mit Threads (Clients)

fanste

Erfahrenes Mitglied
Hi,

ich bastele zurzeit für ein Projekt an einem kleinen Server, der für verschiedene (interne) Aufgaben zuständig ist. Die Anwendung als Daemon laufen zu lassen und ihn in einen Socket (UNIX-Socket) zu binden, ist bisher kein Problem.
Da ich aber noch Anfänger in diesen Sachen bin, weiß ich nicht genau, wie ich das mit den Clients machen soll. Ich dachte dabei an Threads, an die ich einfach den neuen Socket vom Client weitergebe. Kann ich diesen dann außerhalb des Threads einfach schließen oder wird dieser dann auch im Thread geschlossen? Nicht, dass ich dann 2 Sockets habe oder es zu anderen Problemen kommt. Oder würdet ihr mir generell zu einer anderen Methode raten?

Desweiteren habe ich vor, dass ein bisschen was geloggt (in eine Datei) werden soll. Könnte ich da auf irgendwelche Probleme bzgl thread-safe stoßen? Wenn ja, wie umgehe ich das?

Ich habe schon ein bisschen im Internet gesucht aber für einen Anfänger ist das alles ein bisschen undurchsichtig und bevor ich etwas kaputt mache frage ich lieber einmal nach.


Wenn ich soweit gekommen bin, sind noch 2 oder 3 weitere Sachen nötig, die ich dann erst einmal noch selbst zu lösen versuche, bevor ich wieder angerannt kommt ;)

Danke schonmal.
 
Hi.
ich bastele zurzeit für ein Projekt an einem kleinen Server, der für verschiedene (interne) Aufgaben zuständig ist. Die Anwendung als Daemon laufen zu lassen und ihn in einen Socket (UNIX-Socket) zu binden, ist bisher kein Problem.
Da ich aber noch Anfänger in diesen Sachen bin, weiß ich nicht genau, wie ich das mit den Clients machen soll. Ich dachte dabei an Threads, an die ich einfach den neuen Socket vom Client weitergebe. Kann ich diesen dann außerhalb des Threads einfach schließen oder wird dieser dann auch im Thread geschlossen?
Du solltest dich wirklich erstmal mit den Grundlagen befassen. Es gibt doch genug Tutorials über Pthreads (worauf es ja wohl bei dir hinauslaufen würde).

Threads teilen sich Resourcen. Deswegen muss man verschiedene Techniken anwenden damit sich mehrere Threads nicht ins Gehege kommen (Mutex, Conditional Variables etc.).

Gruß
 
Tutorials zu Threads habe ich schon ein paar durch. Genauso wie zu Sockets. Ich weiß nur nicht, ob ich speziell bei meinem Vorhaben (also beides in Kombination) irgendetwas besonderes beachten muss. Ich hab bisher nur mit neuen Prozessen bei Serveranwendeungen gearbeitet (Also pro client einer), was hier aber übertrieben wäre.

Ich habe aber gerade noch etwas gefunden. Ich bin grad am schauen, ob ich damit besser zurecht komme.
 
So, hab es nun hinbekommen. Danke für den dezenten Hinweis bzgl pthreads. Ich hab immer nur die "normalen" Threads durchgearbeitet. Habe dadurch nun etwas gefunden was mir perfekt geholfen hat.

Die andere Sache, die ich noch vorhatte war, dass man wie bei Apache (-k start, stop, etc) den Dienst beeinflussen kann. Auch das habe ich soeben herausgefunden, wie das dort gemacht wird (das ist so einfach, dass ich da absolut nicht dran gedacht habe -> PID-File + kill() ...)

Also Danke für die indirekte Hilfe ;)
 
Zurück