IPC: blocking, nonblocking ?



  • Hallo,

    Ich soll fuer nen projekt ne serveranwendung schreiben die mit nichtverwanden clients kommuniziert.

    Dazu will ich im ersten schritt fuer die IPC ne named Pipe verwenden.
    In der hilfe (MSDN) usw steht bei named pipe drinn, dass man die blocking version verwenden soll ... das nichtblockierende zeugs waer nur wegens der compatiblitaet zu MS Lanmanager drin ...

    ok, also mit blocking hab ich folgendes problem ....

    den serverprozess soll man jederzeit beenden koennen ...
    von den clients aus, kann man nur die entsprechende verbindung kappen ...

    ok, ich erstell also nen Connect-Thread, der die named pipe erzeugt ...
    der geht dann mit ConnectNamedPipe in den wartezustand bis sich nen client connected
    wenn der client da iss, wartet (read) er auf ne erste nachricht, dann startet er nen neuen thread nur fuer den clint und uebergibt im das pipehandle ...
    danach erzeugt er wieder ne Instanz von der named pipe und wartet wieder auf den naechsten client ....

    funzt soweit alles, nur wie bekomm ich den thread sauber runtergefahren, wenn ich den server als solches beende ?
    leider kann ich bei connectNamedpipe kein timeout angeben.
    ich koennte den Connect-Thread mit termintethread abschiessen, find ich aber unschoen ...
    moechte lieber dass der thread sich aanhand von events beendet und dann gleich noch paar aufraeumaktionen macht ....
    wie koennt man sowas umgehen ?
    Gibts sowas wie NamedEvents ?

    Und noch ne prinzipielle Frage .. mehrere Instnazen von ner Named pipe (also alle mittels CraeteNamedPipe und dem selben Pipe Namen erstellt) sind wirklich unabhaengig voneinander, nich dass da alle clients in der selben pipe "plappern" ?

    Ciao ...


Anmelden zum Antworten