Ich habe einen Server läuft gut. Dieser Server ist ein Multi-Client und es funktioniert gut, aber ich denke nicht, dass ich den besten Ansatz dafür benutze und der Hauptpunkt für diese Annahme ist die Art, wie ich die Anwendung "verlasse". Ich bearbeite Signale und verlasse gerade, aber es ist nicht richtig, ich kann nicht sogar debuggen, Valgrind verwendend. In meinen anderen Anwendungen, verwende ich eine globale Variable App Zustand zu halten, zum Beispiel pexit
und in jedem Thread, der ‚für immer‘ läuft, die Bedingung ist:Der beste Weg, auf Verbindungen in C zu hören - Socket
while (!pexit) ....
Und im Signal handelt ich nur gesetzt ' pexit 'zu' wahr 'und alles funktioniert gut. Aber mein Problem ist in der Abhörfunktion, die "blockiert", daher kann ich meine globale Variable nicht verwenden. Ist das ein besserer Weg ohne Blockieren?
while ((client_sock = accept(socket_desc, (struct sockaddr *) &client, (socklen_t*) & c))) {
....
http://stackoverflow.com/questions/2486335/wake-up-thread-blocked-on-accept-call – pm100
akzeptieren Blöcke, bis eine Verbindung bereit ist. Bitte schauen Sie sich 'man getaddrinfo' für ein Beispiel eines Socket-Servers und Clients an. –
Die Antwort hängt wahrscheinlich vom Betriebssystem ab, welches verwenden Sie? Im Allgemeinen würde ich mir nicht zu viele Gedanken über das Aufräumen beim Herunterfahren machen, weil das OS sowieso alles aufräumt. – alain