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;} }
Partager