Named Pipe - Verbindung lösen

31/01/2008 - 12:33 von Christoph | Report spam
Hallo,

folgende Situation:
- Ich habe ein C# und ein C++ Programm.
- Ich benutze eine Named Pipe, um von C# nach C++ Daten zu senden
- Das C# Programm ist der Server, das C++ Programm ist der Client
- Der Server Code ist etwa, wie hier beschrieben:
http://blog.paranoidferret.com/?p3

- Der relevante Client Code sieht etwa so aus:
Verbinden:
void MyPipe::Connect()
{
m_hPipe = CreateFile(
lpszPipename, // pipe name
GENERIC_READ, //| // read and write access
// GENERIC_WRITE,
0, // no sharing
NULL, // default security attributes
OPEN_EXISTING, // opens existing pipe
FILE_FLAG_OVERLAPPED, // default attributes
NULL); // no template file
..
}
Das Verbinden funktioniert auch tadellos

Die Daten aus der Pipe werden wie folgt gelesen:
void MyPipe::readData()
{
fSuccess = ReadFile(
m_hPipe, // pipe handle
&m_Pipestruct, // buffer to receive reply
iSizeOfStruct,//*sizeof(BYTE), // size of buffer
&cbRead, // number of bytes read
NULL); // not overlapped
}
Das lesen an sich funktioniert auch.

Um die Pipe zu schliessen wird letztendlich

CloseHandle(m_hPipe);

aufgerufen. Dies sollte dann eigentlich im C#-Server eine Exception beim
Schreiben in die Pipe auslösen. Dies ist aber nicht der Fall.

Nun meine Frage:
Was muss ich machen, damit der Server mitbekommt, dass der Client nicht
mehr da ist?

Ich bin derart ratlos, dass ich mich über jede Vermutung freuen würde.

MfG
Christoph
 

Lesen sie die antworten

#1 Kerem Gümrükcü
31/01/2008 - 13:33 | Warnen spam
Hallo Christoph,

es gibt einige Ansàtze, aber im grunde genommen, sind
zwei von Releveanz. Ersten würde ich bevorzugen, dem
Server eine Nachricht zu schicken, das die Pipe, also der
Client die Verbndung beenden möchte und zweitens würde
ich vorschlagen, das die Server Pipe in regelmàßigen Abstànden
die Clients befragt, so in der Art ein Are You Alive Singal, oder
einen Mechanismus implementiert, der die Verfügbarkeit der
Pipies erfragt. Das snd Vorschlàge zum Konzept. Code zu
Schreiben kommt erst spàter,...

Grüße

Kerem



Beste Grüsse / Best regards / Votre bien devoue
Kerem Gümrükcü
Microsoft Live Space: http://kerem-g.spaces.live.com/
Latest Open-Source Projects: http://entwicklung.junetz.de
"This reply is provided as is, without warranty express or implied."

Ähnliche fragen