Pipes - un event quand le pipe à changé ? [Résolu]

Signaler
Messages postés
98
Date d'inscription
jeudi 25 novembre 2004
Statut
Membre
Dernière intervention
12 août 2010
-
Messages postés
98
Date d'inscription
jeudi 25 novembre 2004
Statut
Membre
Dernière intervention
12 août 2010
-
Bonjour,

Je me pose la question si dans une application serveur/client qui communique avec un "Named Pipe" il y a un moyen de savoir si le serveur (ou client) à ecrit quelque chose dans le fichier..... ET
ceci dans un event (càd sans bloquer le cours normal du programme ou devoir utiliser un boucle d'attente).
L'exemple de MSDN est bien, mais ça serait bien mieux si le serveur ne devrait pas tourner à l'infini (enfin jusqu'au moment qu'il reçoit 0 du client).

Merci

F.M.

5 réponses

Messages postés
17286
Date d'inscription
mercredi 2 janvier 2002
Statut
Modérateur
Dernière intervention
23 décembre 2019
67
passes par son mode asynchrone...

plus d'infos là :

http://msdn2.microsoft.com/en-us/library/aa365468.aspx
Messages postés
98
Date d'inscription
jeudi 25 novembre 2004
Statut
Membre
Dernière intervention
12 août 2010

Voici le bout de code côté serveur (qui attends un message du client):

      Do  'Wait for a connection, block until a client connects
         res = ConnectNamedPipe(hPipe, ByVal 0)


         'Read/Write data over the pipe
         cbnCount = 4


         res = ReadFile(hPipe, nCount, LenB(nCount), cbnCount, ByVal 0)


         If nCount <> 0 Then


            If nCount > BUFFSIZE Then 'Client requested nCount bytes
               nCount = BUFFSIZE      'but only send up to 20000 bytes
            End If
            'Write the number of bytes requested
            res = WriteFile(hPipe, BigBuffer(0), nCount, cbnCount, ByVal 0)
            'Make sure the write is finished
            res = FlushFileBuffers(hPipe)
         End If


         'Disconnect the NamedPipe
         res = DisconnectNamedPipe(hPipe)
      Loop Until nCount = 0

Même si je change le ReadFile avec ReadFileEx le serveur continuera son loop. N'exite t'il pas un event comme le DataArrival chez les winsock ?
Si non est il possible d'en créer un des event (hola, doucement, car je m'aventure loin là dans un domaine que je ne connais pas du tout).

F.M.
Messages postés
98
Date d'inscription
jeudi 25 novembre 2004
Statut
Membre
Dernière intervention
12 août 2010

Hola !!


Le readfileex fonctionne comme un multithread non ?


je vais essayer de m'amuser un peu avec l'exemple de msdn et je le poste quand j'ai fini (ou je pose ma question ici si ça ne fonctionne pas)






F.M.
Messages postés
17286
Date d'inscription
mercredi 2 janvier 2002
Statut
Modérateur
Dernière intervention
23 décembre 2019
67
tu te connecte / deconnecte a chaque tour ?

assez lourd, non ?

boucle d'attente => voir WaitForSingleObject
Messages postés
98
Date d'inscription
jeudi 25 novembre 2004
Statut
Membre
Dernière intervention
12 août 2010

Pfffff
je donne ma langue au chat....

y a t'il un endroit ou je peux déposer mon code pour que quelqu'un prends le relais pour faire l'exmple ?

il y a 2 codes à déposer :
1. un exemple qui fonctionne avec RedFileEx pour calculer le CRC32
2. l'exemple de MSDN sur les pipes que j'ai masacré - et que je voudrais qu'il fonctionne avec readfileex :(

merci encore.
F.M.