C - Unix - Sockets Nicht-blockierend Lesen

Ich versuche eine simple client-server-chat-Programm. Auf der client-Seite, die ich Dreh, aus einem anderen thread zu Lesen alle eingehenden Daten vom server. Das problem ist, ich möchte ordnungsgemäß beendet, der zweite thread, wenn eine person, die logs aus dem Haupt-thread. Ich war versucht, einen der freigegebenen variable "running" zu kündigen, das problem ist, die socket read () - Befehl ist eine Sperrung Befehl, also wenn ich do while(running == 1), der server hat etwas senden vor dem Lesen zurück und die while-Bedingung nochmals überprüft werden. Ich bin auf der Suche nach einer Methode (mit dem common unix sockets nur) zu tun, ein nicht-blockierendes Lesen, im Grunde eine form von peek() würde funktionieren, denn ich kann ständig überprüfen Sie die Schleife, um zu sehen, wenn ich fertig bin.

Den Lesen-thread-Schleife ist unten, jetzt ist es keine mutex ist für die shared-Variablen, aber ich Plane, hinzufügen, dass später, keine Sorge! 😉

void *serverlisten(void *vargp)
{
    while(running == 1)
    {
        read(socket, readbuffer, sizeof(readbuffer));
        printf("CLIENT RECIEVED: %s\n", readbuffer);
    }
    pthread_exit(NULL);
}

InformationsquelleAutor will | 2011-11-12

Schreibe einen Kommentar