J'ai un programme PC qui reçoit des données de 20 boîtes matérielles personnalisées via UDP. Chacune de ces boîtes envoie continuellement des messages UDP à une seule prise UDP sur le PC. Les messages contiennent tous 10 à 150 octets de données et chaque unité envoie environ 20 messages en 12 secondes.Amélioration du traitement des messages UDP
Les tests montrent que certains messages sont manqués par le PC. Moins de boîtes sur le réseau entraîne moins de messages manqués. La solution à long terme consiste à tamponner les données dans le matériel et laisser le PC récupérer les données requises via TCP, mais j'ai besoin de résoudre/minimiser le problème de message manquant à court terme jusqu'à ce que cette solution puisse être déployée. Idées: - mise à niveau du PC - filtrer les messages inutiles avant la transmission - combinant des messages UDP séparés dans le matériel en un seul plus gros - à l'aide de prises multiples dans le PC pour recevoir des messages
Je cherche commentaires sur ces idées, plus tout ce que nous aurions pu manquer.
Le programme de réception est un programme C++ Builder exécutant Indy9.
Il n'y a pas d'autre trafic sur le réseau - c'est un réseau privé. Je suis d'accord pour dire que la charge du réseau n'est pas élevée - bien qu'elle soit 'éclatée', avec un paquet de 12 messages envoyés sur la limite des 12s. Ma conjecture est que les éclats de messages de plusieurs boîtes se produisent ensemble, et ne pas être vu par le PC en conséquence. – IanH
Ma conjecture est qu'ils ne sont pas (il serait très difficile de synchroniser cela). J'étudierais les paramètres réseau, les commutateurs/concentrateurs, etc. Sur quel type de plate-forme ces machines fonctionnent-elles? – Toad
Ces boîtes sont personnalisées, exécutant la pile LWiP. Les seuls autres périphériques sur le réseau sont le commutateur (non géré 10/100) et le PC. La synchronisation peut être un artefact de l'allumage simultané des 20 boîtes. – IanH