web-dev-qa-db-fra.com

Python se lie à n'importe quelle IP?

J'ai un petit expéditeur de message unilatéral qui fonctionne pendant que je spécifie l'IP à laquelle se connecter dans le code, cependant, j'ai du mal à permettre au socket d'accepter les connexions de n'importe quelle IP. Voici la ligne qui pose problème.

mySocket = socket.socket ( socket.AF_INET, socket.SOCK_STREAM )
mySocket.bind ( ( '', 2727 ) )

Le '' est pour localhost, et cela fonctionne si je saisis manuellement IP, par exemple '192.168.1.106' cependant, comment puis-je le laisser ouvert à tous? Ou est-ce que j'utilise le mauvais type de connexion pour cela?

27
Trent

Si vous souhaitez vous lier à toutes les adresses IPv4 disponibles, spécifiez 0.0.0.0 comme adresse IP. Si vous êtes derrière un routeur et souhaitez que votre socket soit accessible sur Internet, plutôt que simplement disponible sur votre LAN, vous devrez configurer une règle de redirection de port afin que les utilisateurs en dehors de votre LAN puissent accéder au service.

Consultez la question ServerFault suivante pour plus d'informations sur 0.0.0.0: https://serverfault.com/questions/78048/whats-the-difference-between-ip-address-0-0-0-0-and-127-0-0-1 =

36
Polynomial

Liaison à '' a le même effet que sur '0.0.0.0' facilite la transition vers IPv6.

Selon le système d'exploitation, l'ouverture d'un socket.AF_INET6 socket écoute IPv4 et IPv6.

12
glglgl

La liaison à 0.0.0.0 lui permettra d'accepter les connexions à partir de n'importe quelle adresse IPv4 qui peut l'acheminer.