Derniers messages sur Zeste de Savoirhttps://zestedesavoir.com/forums/2014-07-18T18:28:09+02:00Les derniers messages parus sur le forum de Zeste de Savoir.Je ne reçois aucun datagramme en wifi, message #95532014-07-18T18:28:09+02:00SylafrsOne/@SylafrsOnehttps://zestedesavoir.com/forums/sujet/700/je-ne-recois-aucun-datagramme-en-wifi/?page=1#p9553<p>Oky pas bête, j'ai lancé wireshark sur le fixe, mais pas le portable, je ferai ça <img alt=":)" src="/static/smileys/smile.png"></p>
<p>Je ne peux pas le faire de suite (alors je met le thread en stand by ^^' désolé )</p>Je ne reçois aucun datagramme en wifi, message #95432014-07-18T17:47:48+02:00Fraggy/@Fraggyhttps://zestedesavoir.com/forums/sujet/700/je-ne-recois-aucun-datagramme-en-wifi/?page=1#p9543<p>Lance un wireshark sur ton pc portable, tu filtres la sortie avec ton port d'émission/réception du datagrame (ipproto.port ou un truc comme ça), et tu vois si c'est pas ton appli qui déconne (genre une IP mal configurée à un endroit)</p>Je ne reçois aucun datagramme en wifi, message #94782014-07-18T14:48:15+02:00SylafrsOne/@SylafrsOnehttps://zestedesavoir.com/forums/sujet/700/je-ne-recois-aucun-datagramme-en-wifi/?page=1#p9478<p>Je ne connais pas beaucoup de jeux qui utilisent le multicast (je suppose qu'ils pourraient l'utiliser pour détecter les machines présentes dans le réseau local.. ce que j'essaie de faire, en fait (refaire une sorte de SSDP, en fait))</p>
<p>J'ai essayé les différents cas possibles : deux PC en filaire, un iPad en wifi et un portable en wifi.</p>
<p>Si la question était de savoir si les appareils étaient du coup dans des réseaux différents (un pour le wifi, l'autre pour le filaire), non : ce n'est pas ça..</p>
<hr>
<p>Arf, désolé, j'avais mal compris.. ..je ne sais pas quels jeux/applis font ça et si je les ai sous la main pour tester :/</p>Je ne reçois aucun datagramme en wifi, message #94722014-07-18T14:31:40+02:00GuilOooo/@GuilOooohttps://zestedesavoir.com/forums/sujet/700/je-ne-recois-aucun-datagramme-en-wifi/?page=1#p9472<p>Les autres machines sont en filaire, ou en Wifi ?</p>
<p>Étant donné que c'est de l'UDP, il n'y a pas de notion de connexion. Autrement, j'aurais pensé à un truc du style « le routeur bloque parce qu'aucune connexion n'est ouverte, il ne la voit pas » mais ça ne tient pas ici. Tu observes ce comportement avec d'autres applications qui utilisent UDP ? (Typiquement des jeux vidéos en réseau local)</p>Je ne reçois aucun datagramme en wifi, message #94492014-07-18T14:00:08+02:00SylafrsOne/@SylafrsOnehttps://zestedesavoir.com/forums/sujet/700/je-ne-recois-aucun-datagramme-en-wifi/?page=1#p9449<blockquote>
<p>est-ce que la machine destinataire reçoit bien les datagrammes ?</p>
</blockquote>
<p>Oui, c'est ce que je voulais dire par "les autres machines le voient"</p>
<blockquote>
<p>Ce serait possible ?</p>
</blockquote>
<p>C'est la question que je me pose, en fait..</p>Je ne reçois aucun datagramme en wifi, message #94102014-07-18T13:06:17+02:00GuilOooo/@GuilOooohttps://zestedesavoir.com/forums/sujet/700/je-ne-recois-aucun-datagramme-en-wifi/?page=1#p9410<p>J'ai l'impression que ton routeur Wifi jette silencieusement les paquets que tu envoies sur le réseau local, sauf ceux en broadcast. Ce serait possible ?</p>
<p>Dans le setup où tu envoies les paquets mais que tu ne reçois pas de réponse, est-ce que la machine destinataire reçoit bien les datagrammes ?</p>Je ne reçois aucun datagramme en wifi, message #89732014-07-17T12:06:52+02:00SylafrsOne/@SylafrsOnehttps://zestedesavoir.com/forums/sujet/700/je-ne-recois-aucun-datagramme-en-wifi/?page=1#p8973<p>Solution, pour le coup : utiliser le broadcast (pour le moment, en fait, ça ne me dérange pas tant que ça.. même si ça ne répond pas à la question.. Je laisse le topic en suspens et non résolu, si vous avez une idée)</p>
<div class="spoiler">
<p><table class="codehilitetable"><tr><td class="linenos"><div class="linenodiv"><pre> 1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39</pre></div></td><td class="code"><div class="codehilite"><pre><span class="k">public</span> <span class="kt">bool</span> <span class="nf">JoinBroadcast</span><span class="p">(</span><span class="kt">int</span> <span class="n">port</span><span class="p">)</span>
<span class="p">{</span>
<span class="k">try</span>
<span class="p">{</span>
<span class="k">if</span> <span class="p">(</span><span class="k">this</span><span class="p">.</span><span class="n">HasJoined</span><span class="p">)</span>
<span class="k">throw</span> <span class="k">new</span> <span class="nf">UnityException</span><span class="p">(</span><span class="s">"Already joined"</span><span class="p">);</span>
<span class="k">this</span><span class="p">.</span><span class="n">broadcasting</span> <span class="p">=</span> <span class="k">true</span><span class="p">;</span> <span class="c1">// dans JoinGroup : mis à false</span>
<span class="k">this</span><span class="p">.</span><span class="n">UDP</span> <span class="p">=</span> <span class="k">new</span> <span class="n">UdpClient</span><span class="p">();</span>
<span class="k">this</span><span class="p">.</span><span class="n">UDP</span><span class="p">.</span><span class="n">ExclusiveAddressUse</span> <span class="p">=</span> <span class="k">false</span><span class="p">;</span>
<span class="k">this</span><span class="p">.</span><span class="n">UDP</span><span class="p">.</span><span class="n">Client</span><span class="p">.</span><span class="n">SetSocketOption</span><span class="p">(</span>
<span class="n">SocketOptionLevel</span><span class="p">.</span><span class="n">Socket</span><span class="p">,</span>
<span class="n">SocketOptionName</span><span class="p">.</span><span class="n">ReuseAddress</span><span class="p">,</span> <span class="k">true</span><span class="p">);</span>
<span class="k">this</span><span class="p">.</span><span class="n">UDP</span><span class="p">.</span><span class="n">ExclusiveAddressUse</span> <span class="p">=</span> <span class="k">false</span><span class="p">;</span>
<span class="k">this</span><span class="p">.</span><span class="n">UDP</span><span class="p">.</span><span class="n">Client</span><span class="p">.</span><span class="n">Bind</span><span class="p">(</span><span class="k">new</span> <span class="n">IPEndPoint</span><span class="p">(</span><span class="n">IPAddress</span><span class="p">.</span><span class="n">Any</span><span class="p">,</span> <span class="n">port</span><span class="p">));</span>
<span class="cp">#if VERBOSE</span>
<span class="n">GUILog</span><span class="p">.</span><span class="n">Add</span><span class="p">(</span><span class="s">"UDP Port opened"</span><span class="p">,</span> <span class="n">Color</span><span class="p">.</span><span class="n">green</span><span class="p">);</span>
<span class="cp">#endif</span>
<span class="k">this</span><span class="p">.</span><span class="n">GroupAddress</span> <span class="p">=</span> <span class="n">IPAddress</span><span class="p">.</span><span class="n">Broadcast</span><span class="p">;</span>
<span class="k">this</span><span class="p">.</span><span class="n">Group</span> <span class="p">=</span> <span class="k">new</span> <span class="n">IPEndPoint</span><span class="p">(</span><span class="k">this</span><span class="p">.</span><span class="n">GroupAddress</span><span class="p">,</span> <span class="n">port</span><span class="p">);</span>
<span class="k">this</span><span class="p">.</span><span class="n">UDP</span><span class="p">.</span><span class="n">EnableBroadcast</span> <span class="p">=</span> <span class="k">true</span><span class="p">;</span>
<span class="cp">#if VERBOSE</span>
<span class="n">GUILog</span><span class="p">.</span><span class="n">Add</span><span class="p">(</span><span class="s">"Broadcast joined"</span><span class="p">,</span> <span class="n">Color</span><span class="p">.</span><span class="n">green</span><span class="p">);</span>
<span class="cp">#endif</span>
<span class="p">}</span>
<span class="k">catch</span> <span class="p">(</span><span class="n">System</span><span class="p">.</span><span class="n">Exception</span> <span class="n">e</span><span class="p">)</span>
<span class="p">{</span>
<span class="n">UDP</span> <span class="p">=</span> <span class="k">null</span><span class="p">;</span>
<span class="n">GUILog</span><span class="p">.</span><span class="n">Add</span><span class="p">(</span><span class="s">"Error: "</span> <span class="p">+</span> <span class="n">e</span><span class="p">.</span><span class="n">Message</span><span class="p">,</span> <span class="n">Color</span><span class="p">.</span><span class="n">red</span><span class="p">);</span>
<span class="p">}</span>
<span class="k">return</span> <span class="k">this</span><span class="p">.</span><span class="n">HasJoined</span><span class="p">;</span>
<span class="p">}</span>
</pre></div>
</td></tr></table>
</p>
</div>Je ne reçois aucun datagramme en wifi, message #87022014-07-16T17:43:49+02:00SylafrsOne/@SylafrsOnehttps://zestedesavoir.com/forums/sujet/700/je-ne-recois-aucun-datagramme-en-wifi/?page=1#p8702<p>Bonjour,</p>
<p>J'essaie de manipuler les datagrammes en multicast avec Mono.
J'arrive tranquillement à faire ce que je veux sur les Mac, les PC. </p>
<p>Mais dès lors que j'utilise une machine en Wifi (comme un iPad, ou un PC portable) :</p>
<ul>
<li>J'arrive à envoyer mes datagrammes (les autres machines le voient)<ul>
<li><strong>Edit :</strong> Non. l'iPad peut, pas le PC Portable <img alt=":'(" src="/static/smileys/pleure.png"></li>
</ul>
</li>
<li>Je n'en reçois aucun (des autres machines)</li>
</ul>
<p>Si je branche le PC Portable sur Ethernet (et que je relances le programme) plus de soucis tout va bien.
Le wifi et Ethernet sont sur le même réseau.</p>
<p>Une idée ?</p>
<p>J'ai pu voir que certains routeurs ne laissent pas passer les données multicast en wifi, mais comme je l'ai dit, je les envoie bien : je n'arrive juste pas à les recevoir.. un problème de routeur ?</p>
<p>Quelqu'un sait si les iPads ont leur propre parefeu ?</p>
<p>Edit : du code. (<em>Mais je ne pense pas que le soucis vienne de là</em>)</p>
<p>La 'connection' (rejoindre le groupe)</p>
<div class="spoiler">
<p><table class="codehilitetable"><tr><td class="linenos"><div class="linenodiv"><pre> 1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37</pre></div></td><td class="code"><div class="codehilite"><pre><span class="k">public</span> <span class="kt">bool</span> <span class="nf">JoinGroup</span><span class="p">(</span><span class="kt">string</span> <span class="n">groupIP</span><span class="p">,</span> <span class="kt">int</span> <span class="n">groupPort</span><span class="p">)</span>
<span class="p">{</span>
<span class="k">try</span>
<span class="p">{</span>
<span class="k">if</span> <span class="p">(</span><span class="n">UDP</span> <span class="p">!=</span> <span class="k">null</span><span class="p">)</span>
<span class="k">throw</span> <span class="k">new</span> <span class="nf">UnityException</span><span class="p">(</span><span class="s">"Already started"</span><span class="p">);</span> <span class="c1">// Huhu, grillé</span>
<span class="k">this</span><span class="p">.</span><span class="n">UDP</span> <span class="p">=</span> <span class="k">new</span> <span class="n">UdpClient</span><span class="p">();</span>
<span class="k">this</span><span class="p">.</span><span class="n">UDP</span><span class="p">.</span><span class="n">ExclusiveAddressUse</span> <span class="p">=</span> <span class="k">false</span><span class="p">;</span>
<span class="k">this</span><span class="p">.</span><span class="n">UDP</span><span class="p">.</span><span class="n">Client</span><span class="p">.</span><span class="n">SetSocketOption</span><span class="p">(</span>
<span class="n">SocketOptionLevel</span><span class="p">.</span><span class="n">Socket</span><span class="p">,</span>
<span class="n">SocketOptionName</span><span class="p">.</span><span class="n">ReuseAddress</span><span class="p">,</span> <span class="k">true</span><span class="p">);</span>
<span class="c1">// Pas sûr que ce soit nécessaire ce doublon..</span>
<span class="k">this</span><span class="p">.</span><span class="n">UDP</span><span class="p">.</span><span class="n">ExclusiveAddressUse</span> <span class="p">=</span> <span class="k">false</span><span class="p">;</span>
<span class="k">this</span><span class="p">.</span><span class="n">UDP</span><span class="p">.</span><span class="n">Client</span><span class="p">.</span><span class="n">Bind</span><span class="p">(</span><span class="k">new</span> <span class="n">IPEndPoint</span><span class="p">(</span><span class="n">IPAddress</span><span class="p">.</span><span class="n">Any</span><span class="p">,</span> <span class="n">groupPort</span><span class="p">));</span>
<span class="n">IPAddress</span> <span class="n">parsedGroupAddress</span> <span class="p">=</span> <span class="n">IPAddress</span><span class="p">.</span><span class="n">Parse</span><span class="p">(</span><span class="n">groupIP</span><span class="p">);</span>
<span class="k">this</span><span class="p">.</span><span class="n">Group</span> <span class="p">=</span> <span class="k">new</span> <span class="n">IPEndPoint</span><span class="p">(</span><span class="n">parsedGroupAddress</span><span class="p">,</span> <span class="n">groupPort</span><span class="p">);</span>
<span class="k">this</span><span class="p">.</span><span class="n">UDP</span><span class="p">.</span><span class="n">JoinMulticastGroup</span><span class="p">(</span><span class="n">parsedGroupAddress</span><span class="p">,</span> <span class="n">TTL</span><span class="p">);</span> <span class="c1">// TTL : constant (20~50)</span>
<span class="c1">//UDP.MulticastLoopback = true;</span>
<span class="k">this</span><span class="p">.</span><span class="n">UDP</span><span class="p">.</span><span class="n">MulticastLoopback</span> <span class="p">=</span> <span class="k">false</span><span class="p">;</span>
<span class="n">GUILog</span><span class="p">.</span><span class="n">Add</span><span class="p">(</span><span class="s">"Group joined"</span><span class="p">,</span> <span class="n">Color</span><span class="p">.</span><span class="n">green</span><span class="p">);</span>
<span class="p">}</span>
<span class="k">catch</span> <span class="p">(</span><span class="n">System</span><span class="p">.</span><span class="n">Exception</span> <span class="n">e</span><span class="p">)</span>
<span class="p">{</span>
<span class="k">this</span><span class="p">.</span><span class="n">UDP</span> <span class="p">=</span> <span class="k">null</span><span class="p">;</span>
<span class="n">GUILog</span><span class="p">.</span><span class="n">Add</span><span class="p">(</span><span class="s">"Error: "</span> <span class="p">+</span> <span class="n">e</span><span class="p">.</span><span class="n">Message</span><span class="p">,</span> <span class="n">Color</span><span class="p">.</span><span class="n">red</span><span class="p">);</span>
<span class="p">}</span>
<span class="k">return</span> <span class="p">(</span><span class="k">this</span><span class="p">.</span><span class="n">UDP</span> <span class="p">!=</span> <span class="k">null</span><span class="p">);</span>
<span class="p">}</span>
</pre></div>
</td></tr></table>
</p>
</div>
<p>Envoi et reception :</p>
<table class="codehilitetable"><tr><td class="linenos"><div class="linenodiv"><pre>1
2
3
4
5
6</pre></div></td><td class="code"><div class="codehilite"><pre><span class="c1">// Envoi (appelé en boucle pour tester)</span>
<span class="k">this</span><span class="p">.</span><span class="n">UDP</span><span class="p">.</span><span class="n">Send</span><span class="p">(</span><span class="n">bytes</span><span class="p">,</span> <span class="n">bytes</span><span class="p">.</span><span class="n">Length</span><span class="p">,</span> <span class="k">this</span><span class="p">.</span><span class="n">Group</span><span class="p">);</span>
<span class="c1">// Reception (appelée en boucle)</span>
<span class="k">this</span><span class="p">.</span><span class="n">LastReceivePoint</span> <span class="p">=</span> <span class="k">new</span> <span class="n">IPEndPoint</span><span class="p">(</span><span class="k">this</span><span class="p">.</span><span class="n">Group</span><span class="p">.</span><span class="n">Address</span><span class="p">,</span> <span class="k">this</span><span class="p">.</span><span class="n">Group</span><span class="p">.</span><span class="n">Port</span><span class="p">);</span>
<span class="k">this</span><span class="p">.</span><span class="n">data</span> <span class="p">=</span> <span class="k">this</span><span class="p">.</span><span class="n">UDP</span><span class="p">.</span><span class="n">Receive</span><span class="p">(</span><span class="k">ref</span> <span class="k">this</span><span class="p">.</span><span class="n">LastReceivePoint</span><span class="p">);</span>
</pre></div>
</td></tr></table>