Bonjour !

j essaye d apprendre à utiliser un protocole de communication pour la lumière , qui se nomme Art-Net.
(specs: http://www.artisticlicence.com/WebSi...es/art-net.pdf ) Attention je n utilise que 3 functions de ce protocole ( qui est maousse costaud: ArtPoll ArtPollReply et ArtDmx)

Ce protocole me pose quelques petits soucis sur le dialogue client/serveur/client. En fait je suis vraiment assez newbie sur les histoires de réseaux

j ai trois cas de figure:
A/
Le serveur Poll sur le réseau pour savoir si il y a des clients
Les clients lui renvoient une PollReply qu il faut lire et analyser ( retirer les IP et les identifiants)

B/
Le client Poll sur le réseau savoir si il y a un serveur à bord
Le serveur lui renvoie une réponse de qui il est

C/
Le client renvoit des données au serveur dans un train de 529 char.
( cas de figure pas encore écrit)

Un message Poll fait 13 char
Un ArtPollReply en fait 239
Un message ArtDmx en fait 529

Ci dessous est une boucle test, avant d injecter tout celà dans mon app.

J'ai l impression en fait de freezer mon test avec mes if((bytesreceived =())== la largeur du message attendu).
Serait ce une erreur grossière d'approche ?

Voilà ! merci de vos conseils !

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
 
while (index_quit==0)
    {
if(bytesreceived=recvfrom(sock,ReceivedArtPollBuffer,sizeof(ReceivedArtPollBuffer),0,(SOCKADDR*)&sin,&sinsize)==13)   
    { //an artPolling is received from outside, we need to reply
    if( AnalysePolling(ReceivedArtPollBuffer)==1)
    {
     nbrbytessended=sendto(sock, ArtPollReplyBuffer,sizeof( ArtPollReplyBuffer),0,(SOCKADDR*)&sin,sinsize);
     }
    }
     else if(bytesreceived=recvfrom(sock,ReceivedArtPollReplyBuffer,sizeof(ReceivedArtPollReplyBuffer),0,(SOCKADDR*)&sin,&sinsize)==239)   
    {//an ArtPollReply is done by node, we want to analyse it AnalyseArtPollReply();                                                                          
    }
    Sleep(1);
    if(_kbhit()){index_quit=1;}      
    }