Pipes - un event quand le pipe à changé ?

Résolu
Brosske Messages postés 98 Date d'inscription jeudi 25 novembre 2004 Statut Membre Dernière intervention 12 août 2010 - 9 nov. 2007 à 11:28
Brosske Messages postés 98 Date d'inscription jeudi 25 novembre 2004 Statut Membre Dernière intervention 12 août 2010 - 9 nov. 2007 à 13:34
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

Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 74
9 nov. 2007 à 12:02
passes par son mode asynchrone...

plus d'infos là :

http://msdn2.microsoft.com/en-us/library/aa365468.aspx
3
Brosske Messages postés 98 Date d'inscription jeudi 25 novembre 2004 Statut Membre Dernière intervention 12 août 2010 1
9 nov. 2007 à 13:03
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.
0
Brosske Messages postés 98 Date d'inscription jeudi 25 novembre 2004 Statut Membre Dernière intervention 12 août 2010 1
9 nov. 2007 à 13:09
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.
0
Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 74
9 nov. 2007 à 13:26
tu te connecte / deconnecte a chaque tour ?

assez lourd, non ?

boucle d'attente => voir WaitForSingleObject
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Brosske Messages postés 98 Date d'inscription jeudi 25 novembre 2004 Statut Membre Dernière intervention 12 août 2010 1
9 nov. 2007 à 13:34
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.
0
Rejoignez-nous