2009-09-27 4 views
0

tout ce que j'essaie d'établir une communication peer-to-peer (UDP) via l'extension firefox. J'ai un programme python qui fonctionne sur la ligne de commande. J'ai construit un composant xpcom en l'utilisant. Mais de façon surprenante, je ne pouvais recevoir de message qu'à travers le programme en ligne de commande python.Wireshark ------- Port source: timbuktu-srv2?

Nous avons essayé suivant (Tout travail sur localhost):

composant Firefox XPCOM émetteur ->composant firefox XPCOM récepteur - ne fonctionne pas

ligne de commande Python comme expéditeur ->composant de firefox xpcom comme récepteur - A travaillé

firefox xpcom comp onent comme expéditeur ->Python ligne de commande comme récepteur - ne fonctionne pas

Python commandline comme expéditeur ->ligne de commande python comme récepteur - A travaillé

Lorsque nous avons observé des paquets en utilisant Wireshark nous avons eu quelques différences -

Firefox xpcom à commande python ligne ET firefox xpcom Firefox xpcom (qui ne worke d) disposer d'enregistrement de paquets comme suit

Un tel type de paquets (port source marqué comme nombre non) produit par

Winsock (C++)

composant XPCOM

C#

...UDP Source port: timbuktu-srv2 Destination port: 30000 

Ligne de commande python vers la ligne de commande python ET Ligne de commande Python vers X PCOM (qui ne fonctionnait) ont enregistrement de paquets comme suit

... UDP Source port: 30000 Destination port: 30000 

Je ne sais pas grand-chose au sujet de la mise en réseau, mais le dossier a marqué ..Source port: timbuktu-srv2.. ne parvient pas à atteindre sa destination.

J'ai essayé communication p2p utilisant Python, C++ (Winsock), C#, mais ne pouvais réussi qu'avec Python différence que je pouvais observer est tel type d'enregistrement spécifique avec python ..

certains peuvent gourous de réseautage lumière flash par-dessus ?

Répondre

0

Le timbuktu-srv2 que vous voyez est juste le résultat de Wireshark recherchant le numéro de port réel par rapport à sa liste de services connus. Si vous cochez la IANA assigned port numbers list, vous verrez cette entrée:

timbuktu-srv2 1418/udp Timbuktu Service 2 Port 

... ce qui signifie que votre application utilise 1418 le port source du paquet UDP a envoyé.30000 ne devient pas un nom de service de texte car votre base de données de services locaux n'a pas d'entrée pour ce numéro de port. Ceci, à lui seul, n'explique pas le problème - en réalité, le côté serveur doit accepter le client en utilisant le port source de son choix. Cependant, il semble probable dans ce cas que le côté receveur n'accepte que les paquets avec un port source de 30000. Pour ce faire, vous devez lier le socket à l'adresse locale INADDR_ANY et au port 30000 avant d'envoyer vos paquets.