EOF bei Named Pipes
-
Hi,
ich habe ein Problem. Und zwar habe ich mit einem Serverprozess mittels CreateNamedPipe und ConnectNamedPipe eine wartende, duplexfähige Named Pipe erzeugt. Auf Clientseite habe ich diese mittels CreateFile geöffnet. Wenn ich nun auf Clientseite mit WriteFile schreibe und auf Serverseite mit ReadFile lese, erkenne ich das EOF nicht. Wie kann ich dem Server mitteile, dass er aufhören kann zu lesen? Bisher hängt er in einer Endlosschleife fest. Ein CloseHandle bringt nix, da ich nach dem Schreiben die Antwort ja noch lesen muss. Ein SetEndOfFile meldet einen Fehler ERROR_INVALID_PARAMETER. Weiß jemand einen Rat?
-
Es gibt kein EOF.
Egal wie Du die named pipe verwendest soltest Du Dir ein Protokoll einfallen lassen. Ich sende meistens 2 oder 4 Bytes zuerst mit der Länge der nachfolgenden Nachricht.Ansonsten schau Dir den Message Mode der Named Pipes an:
http://msdn.microsoft.com/en-us/library/aa365605(VS.85).aspxTo create the pipe handle in message-read mode, specify PIPE_READMODE_MESSAGE. Data is read from the pipe as a stream of messages. A read operation is completed successfully only when the entire message is read. If the specified number of bytes to read is less than the size of the next message, the function reads as much of the message as possible before returning zero (the GetLastError function returns ERROR_MORE_DATA). The remainder of the message can be read using another read operation.
Entsprechende Samples findest Du auch dort in der MSDN.