Chat in C

Hallo,

ich möchte einen Chat Server und Client in C schreiben. Das ganze soll in der Konsole laufen. Nun stehe ich gerade vor einem kleinen Problem:
Wenn ich recv() aufrufe, um Daten zu empfangen, wird dadurch das Programm blockiert. Also können die zwei Chatteilnehmer immer nur abwechseln etwas schreiben.
Wie krieg ich das hin, dass jeder Chatteilnehmer (im aktuellen Stadium sind das nur 2) zu jeder Zeit etwas empfangen, und auch senden kann?

EDIT: Gleiches gilt natürlich für die Tastatureingabe, die im Moment über fgets() realisiert ist. Solange auf die Eingabe gewartet wird, kann ich nix empfangen.
 
Zuletzt bearbeitet:
Entweder kannst du dein Problem über sogenannte Threads lösen, oder du umgehst das Problem und kontrollierst vor dem aufruf von recv() mit select (klick), ob Daten vorhanden sind, die du empfangen konnst, so dass recv() nicht mehr blockiert. Außerdem kannst du die Eingabe etwas umständlich über kbhit() und getch() bewerkstelligen.
 
Zur Eingabe würde mich auch noch eine Eventbasierte GUI einfallen, die würde dein Problem lösen. (Für C++ wäre zB u.a. QT angebracht)
 
Schonmal danke für die Antworten!! Ich habe es jetzt spontan mal mit Threads zusammengebastelt, und das funktioniert schonmal wunderbar! Aber um mehr als eine Verbindung zu behandeln werde ich wohl nicht um select() herumkommen.
Ich werd mich bei weiterem Fortschritt nochmal melden. Solange nochmal Danke!
 
Zurück
Oben