J'utilise recvfrom pour recevoir des messages muticast du réseau. Il existe deux interfaces réseau sur le système et recvfrom ne reçoit que la première interface. Lorsque la seconde interface est fonctionnelle, recvfrom est bloqué indéfiniment et ne reçoit un paquet qu'après le passage à la première interface. SO_REUSEADDR est utilisé pour définir les options lors de l'ouverture de la socket. Supprimer cette option n'aide pas non plus. Des idées? Je suis coincé.recvfrom collé sur une interface
Répondre
Je créer un socket pour chaque interface et me lier explicitement à l'interface plutôt que d'utiliser INADDR_ANY
. Le problème avec l'utilisation de INADDR_ANY
est qu'une fois que vous avez reçu un datagramme, le socket est probablement implicitement lié à l'interface sur laquelle le datagramme est arrivé, à mon humble avis il doit être de sorte que vous puissiez envoyer une réponse de l'interface arrivé sur ...
J'ai été en mesure de résoudre ce problème en utilisant DROP_MEMBERSHIP et ADD_MEMBERSHIP sur le socket de multidiffusion chaque fois que l'interface réseau a changé. J'ai également dû apporter des modifications à la bibliothèque de socket, où initialement elle renvoyait la première interface compatible multicast disponible (même si aucune adresse IP n'est affectée) pour renvoyer cette interface multicast activée et ayant une adresse IP affectée.
- 1. org.apache.commons.httpclient.HttpClient collé sur demande
- 2. jQuery Ajax collé sur beforeSend
- 3. recvfrom problème de réception infinie
- 4. Attributs sur une interface
- 5. Annuler recvfrom UDP en C sous Unix
- 6. Pile de photos AS3 - collé sur quelque chose de simple
- 7. Catch collé entrée dans textarea
- 8. scénario Débutant AJAX ne fonctionne pas, collé sur l'ouverture XMLHttpRequest
- 9. Une interface utilisateur sur Windows Workflow
- 10. Méthodes d'extension sur une interface; délégués
- 11. PHP pour nettoyer collé entrée Microsoft
- 12. Désinfecter le texte collé de MS-Word
- 13. will_paginate collé à la page 2
- 14. RecvFrom() renvoie un paquet plus grand que l'expéditeur NIC MTU
- 15. adresse IP multicast - bloqué dans l'appel à recvfrom
- 16. TIME_WAIT sur Loopback Interface
- 17. L'appel UDP recvfrom renvoie un mauvais numéro de port. Pourquoi?
- 18. Comment ajouter une étiquette multiligne sur une interface graphique Java?
- 19. Comment obtenir une entrée d'utilisateur sur une interface d'horloge
- 20. Pouvez-vous implémenter une interface sur une classe Linq2Sql?
- 21. Les appels successifs à recvfrom() perdent des données?
- 22. référençant une interface
- 23. Briser une interface
- 24. Comment imposer une interface?
- 25. Moq'ing une interface
- 26. shared_ptr retourner une interface
- 27. Problème nommant une interface
- 28. Interface beanstalkd/interface graphique
- 29. Bande "http: //" du texte collé dans la zone de texte
- 30. Que signifie travailler sur une interface logicielle ODBC?
Voulez-vous être en mesure de recevoir à partir des deux interfaces, ou juste un? Si ce n'est le cas, essayez de relier votre socket à l'adresse de cette interface plutôt que de lui donner la valeur par défaut "any". –
Bonjour, Je le lie à INADDR_ANY et attend de recevoir la multidiffusion sur l'une ou l'autre interface, selon ce qui est actif. Mais recevfrom ne fonctionne que sur une interface et reste bloqué lorsque l'autre interface est active. – Rohith