Ich versuche mich gerade erstmals an Server/Client-Anwendungen. Das Projekt ist in C geschrieben. Habe dazu entsprechend dem Lehrbuch eine TCP-Verbindung erstellt, deren Scckets ich serverseitig ohne threads sondern in einer Schleife mit select() auf Aktivität prüfe.
Wenn ein Socket aktiv wird empfange ich die Nachricht und gebe testweise die Nachricht mit printf() aus. Sofern ich nach jedem receive() einer Nachricht dem Client etwas zurückschicke läuft die Sache prima. Wenn ich auf das zurückschicken verzichte, dann blockiert das select() beim zweiten Aufruf (nach dem Empfang der ersten Nachricht) und es ist kein weiteres receive() möglich. Das select() erwacht erst wieder wenn der Client beendet wird. Allerdings kommt dann nur mehr ein receive() mit Länge 0, das die Beendigung der Verbindung durch den Client mitteilt.
Gehört das so oder stimmt noch etwas nicht mit meinem Code ? Kennt sich hier jemand mit sowas aus ?
Danke für jeden Tipp!
Wenn ein Socket aktiv wird empfange ich die Nachricht und gebe testweise die Nachricht mit printf() aus. Sofern ich nach jedem receive() einer Nachricht dem Client etwas zurückschicke läuft die Sache prima. Wenn ich auf das zurückschicken verzichte, dann blockiert das select() beim zweiten Aufruf (nach dem Empfang der ersten Nachricht) und es ist kein weiteres receive() möglich. Das select() erwacht erst wieder wenn der Client beendet wird. Allerdings kommt dann nur mehr ein receive() mit Länge 0, das die Beendigung der Verbindung durch den Client mitteilt.
Gehört das so oder stimmt noch etwas nicht mit meinem Code ? Kennt sich hier jemand mit sowas aus ?
Danke für jeden Tipp!