Je crée un programme qui écoute les flux vidéo sur multidiffusion. L'écoute d'un flux avec Mono sous Linux fonctionne correctement, mais l'écoute de 15 flux supprime des paquets. L'exécution du code sous Windows .NET ne supprime pas les paquets et l'écoute des flux avec un programme C sous Linux ne supprime pas les paquets. Y a-t-il quelque chose que je pourrais faire pour optimiser cela?Mono abandonnant des paquets lors de la réception de beaucoup de multidiffusion
1
A
Répondre
2
Selon le mécanisme que vous utilisez, du point de vue du code, il se peut que vous ne capturiez pas les paquets assez rapidement. Cela se traduirait par des baisses de données de multidiffusion, qui de par sa nature même ne sont pas fiables. Sans plus d'informations sur le mécanisme utilisé, il est difficile de vous donner des conseils plus spécifiques.
mise à jour en fonction des commentaires:
Si vous avez un fil par récepteur et plus de threads que les processeurs, vous pouvez être surabonnement vos fils, causant beaucoup de changements de contexte coûteux. Cela pourrait entraîner la perte de paquets.
Questions connexes
- 1. Problème lors de la réception de paquets UDP
- 2. Comment recevoir des paquets de multidiffusion sur Android
- 3. Contrôles de multidiffusion de limitation
- 4. Aide pour l'envoi/la réception de paquets UDP - C Sockets
- 5. Quantification de 16 millisecondes lors de l'envoi/réception de paquets TCP
- 6. Pourquoi mon programme Java enverrait-il des paquets de multidiffusion avec un TTL de 1?
- 7. Réception de paquets de diffusion à l'aide d'une socket de paquets
- 8. Problème avec les sockets de multidiffusion Android
- 9. Comment créer des paquets lors de l'exécution?
- 10. émission d'informations de connexion lors de la réception de l'achat
- 11. Comment détecter une perte de données irrécupérable lors de l'utilisation de la multidiffusion de MSMQ?
- 12. Réception de messages de multidiffusion sur un PC Windows multi-hôtes
- 13. Où puis-je trouver beaucoup de paquets Delphi 7?
- 14. Gestion de la mémoire des paquets
- 15. Aide Python - Analyse des paquets de paquets
- 16. boost :: échec des transferts de paquets asio lors d'une tentative d'envoi très fréquente de paquets
- 17. groupe de multidiffusion join/leave utilisant libpcap
- 18. Suppression de la multidiffusion PostSharp avec l'attribut
- 19. Afficher la modalité lors de la réception d'une notification push
- 20. Problème lors de la réception du premier message par Smack
- 21. WCF net.pipe avorte lors de la réception réponse
- 22. Découverte de la taille maximale des paquets
- 23. Que faire à propos des erreurs de connexion avortées de MySQL (Erreur lors de la lecture des paquets de communication)
- 24. Comment vérifier le mono lors de l'exécution
- 25. Problème lors de la réception d'une liste (Android)
- 26. Réception de messages de diffusion
- 27. iPhone développement: néant userInfo lors de la réception d'une notification
- 28. Solution de multidiffusion X11 screencasting
- 29. Problème lors de la réception d'une notification Apple Push
- 30. Erreur lors de la réception en UDP: Connexion refusée
Je crée un UdpClient, en utilisant .Client.Bind sur l'adresse de multidiffusion, puis en appelant BeginReceive. Dans le rappel, je mets les données reçues dans une file d'attente. Cela arrive sur son propre thread. –
Vous aviez raison d'être une ressource de système d'exploitation. Chaque processus prend 100% d'un noyau. –
Heureux d'entendre que c'était quelque chose de facile à diagnostiquer! –