Pourquoi reçois-je des datagrammes UDP de commande, même avec les processus en cours d'exécution au niveau local?
Je suis en développement java de l'interface entre un serveur de streaming et un client flash. J'ai remarqué que les datagrammes UDP peuvent atteindre mon interface de commande, même si les deux processus sont en cours d'exécution au niveau local.
Est-ce normal? J'ai pensé qu'étant donné qu'aucun datagramme doit passer par un routeur ou un périphérique réseau, puis qui ne devrait pas se passer.
C'est une bonne question, je suis aussi intéressé dans le de ce.
OriginalL'auteur Bilthon | 2010-03-28
Vous devez vous connecter pour publier un commentaire.
En fait il n'y a pas de garanties de la commande et la réception de paquets UDP, même si elles sont envoyées par localhost localhost. Tout simplement parce que la spécification du protocole ne veut pas dire quoi que ce soit.
Puisque vous ne pouvez pas faire des hypothèses sur eux, vous devez choisir d'utiliser le protocole TCP ou la poignée de la réorganisation à l'aide d'un numéro de séquence traitée par vos programmes..
OriginalL'auteur Jack
Ce serait dépend du système d'exploitation. Alors que vous n'avez pas à spécifier un système d'exploitation, il n'est pas important de toute façon. Pour rester portable, vous devriez toujours anticiper vos datagram sockets de réception de données de la commande.
OriginalL'auteur Thomas M. DuBuisson
Bien que vous exécutez localhost, s'attendre à des datagrammes UDP être hors de la séquence de déploiement réel.
Si vous en avez besoin dans la séquence, essayez de TCP.
OriginalL'auteur Jack
UDP n'est pas spécifiée pour préserver la séquence, comme les affiches ci-dessus ont tous dit, mais si il n'y a pas routeurs intermédiaires je soupçonne aussi un bug dans votre code.
Veuillez expliquer cette observation.
Wow, juste de remarquer ce commentaire. Vous ne l'étiquette à mon nom, donc pas de notification. De toute façon: les systèmes d'exploitation qui accélèrent le traitement des paquets par la diffusion de l'œuvre à plusieurs cœurs peuvent avoir traité les paquets UDP sur les différents cœurs et les a placés dans l'application de lecture de la file d'attente de l'ordre.
Plus de nourriture pour la pensée, TCP peut avoir le même problème Zan est en train de parler. Si plus d'un thread est de la manipulation de l'envoi de données, les données peuvent être transmises dans un ordre différent de celui que vous avez écrit.
Zan commentaire est effectivement mieux que les réponses; c'est la seule chose qui donne une explication possible de la question, qui était POURQUOI de ce qui se passait.
OriginalL'auteur user207421