Question

tout ce que je suis en train d'établir le peer to peer (UDP) via l'extension Firefox. Je programme python qui fonctionne en ligne de commande. Je construit un composant XPCOM utiliser. Mais, étonnamment, je ne pouvais recevoir des messages au travers du programme python de ligne de commande.

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

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

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

composants XPCOM Firefox comme expéditeur -> ligne de commande Python récepteur - ne fonctionne pas

python ligne de commande en tant qu'expéditeur -> ligne de commande du python comme récepteur - ouvré

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

Firefox xpcom à la ligne de commande python firefox xpcom à firefox xpcom (qui n'a pas travaillé) ont enregistrement de paquets comme suit

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

Winsock (C ++)

XPCOM composant

C #

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

ligne de commande python à la ligne de commande python commande Python ligne XPCOM (qui a travaillé) ont enregistrement de paquets comme suit

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

Je ne sais pas beaucoup sur la mise en réseau, mais le dossier marqué ..Source port: timbuktu-srv2.. ne parvient pas à atteindre sa destination.

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

un peu de lumière gourous de réseautage flash peut-dessus?

Était-ce utile?

La solution

Le timbuktu-srv2 vous voyez est juste le résultat de la recherche Wireshark le numéro de port réel par rapport à la liste des services connus. Si vous vérifiez les numéros de port attribué IANA liste , vous verrez cette entrée:

timbuktu-srv2   1418/udp   Timbuktu Service 2 Port

... de sorte que votre application signifie simplement utilisé 1418 le port source du paquet UDP a envoyé. 30000 ne soit pas transformé en un nom de service de texte parce que votre base de données de services locaux ne possède pas d'entrée pour ce numéro de port.

, à elle seule, n'explique pas la question - vraiment, côté serveur doit accepter le client à l'aide quel que soit le port source, il veut. Cependant, il semble probable dans ce cas que le côté recepteur ne s'accepte les paquets avec un port source de 30000. Pour cela, vous devez lier la prise à la INADDR_ANY adresse locale et le port 30000 avant d'envoyer votre paquet (s).

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