Pourquoi dois-je obtenir datagrammes UDP hors d'usage, même avec les processus en cours d'exécution au niveau local?

StackOverflow https://stackoverflow.com/questions/2533873

  •  22-09-2019
  •  | 
  •  

Question

Je développe une interface Java entre un serveur de streaming et un client flash. J'ai remarqué que les datagrammes UDP peut atteindre mon interface hors service, même si les deux processus sont en cours d'exécution au niveau local.

Est-ce normal? Je pensais que pas datagrammes doit passer par un routeur ou tout autre dispositif de réseau, cela ne devrait pas être le cas.

Était-ce utile?

La solution

En fait, il n'y a aucune garantie de commande et la réception sur les paquets UDP, même si elles sont envoyées par localhost sur localhost. Tout simplement parce que la spécification du protocole ne signifie pas rien.

Puisque vous ne pouvez pas faire des hypothèses sur eux, vous devez choisir d'utiliser TCP ou gérer réordonnement en utilisant un numéro de séquence géré par vos programmes ..

Autres conseils

Ce fonctionneraient dépend du système. Alors que vous ne parvenez pas à spécifier un système d'exploitation, il est important de ne pas de toute façon. Pour rester portable, vous devez toujours prévoir vos prises de datagrammes réception de données de commande.

Bien que vous utilisez localhost, attendez-vous datagrammes UDP pour être hors séquence dans le déploiement réel.

Si vous avez besoin d'eux dans l'ordre, essayez TCP.

UDP n'est pas spécifié pour préserver l'ordre, comme les affiches ont surtout dit, mais s'il n'y a pas de routeurs intermédiaires Je soupçonne aussi un bug dans votre code.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top