2010-10-26 13 views
4

Est-il possible de spécifier explicitement le port local qui doit être utilisé par net.Stream, ou de savoir quel port local est utilisé pour la connexion?Comment puis-je savoir quel port local est utilisé par Stream?

Selon la documentation, port local ne peut pas être spécifié:

stream.connect(port, host='127.0.0.1') 
+0

vous souhaitez vous connecter à un serveur ou écouter sur un port? – mykhal

+0

Je me connecte à un serveur, et j'essaie de savoir à quel port du client du port local est lié –

+0

La vraie question est: que voulez-vous accomplir? La partie distante est dans une meilleure position pour déterminer votre numéro de port, car elle voit l'adresse IP/numéro de port après toutes les modifications que les intermédiaires NAT et les proxies peuvent avoir fait. – bew

Répondre

1
stream.connect(port, host='127.0.0.1') 

répertorié l'adresse indiquée avec le port spécifié.

Si vous voulez ouvrir le socket, vous devez utiliser net.createConnection(port, host='127.0.0.1'), http.createServer ou SMTH comme ça ... Dans Linux pour afficher tous écoutèrent les sockets, le type netstat -an

+1

Je veux ouvrir une socket client (pas une ** socket serveur **, qui réagit aux connexions sortantes). Chaque socket client est lié à un port local, qui est utilisé pour recevoir une réponse de la part du serveur. J'essaie de comprendre en cours d'exécution, quel port est utilisé. Avec 'netstat -tlnp', il est possible de savoir quel port est utilisé par le socket client (par ID de processus), mais je veux avoir quelque chose de moins encombrant. –

+1

On dirait qu'il est impossible de savoir quel port local est utilisé via l'API, donc je vais devoir utiliser 'netstat -tlnp' pour l'obtenir par l'ID du processus. –

+1

Vous pouvez utiliser socket.localPort. –

0

Si vous contrôlez le serveur, vous pouvez le demander. Pas joli, mais pas comme les cerceaux que vous avez à traverser lorsque vous essayez de négocier des connexions peer-to-peer derrière NAT.

Questions connexes