2011-11-07 21 views
17

Tengo un pequeño remitente de mensajes de un lado que funciona mientras especifico la IP para conectarme en el código, sin embargo, tengo problemas para permitir que el socket acepte conexiones desde cualquier IP. Aquí está la línea que es el problema.¿Socket Python se une a cualquier IP?

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

El '' es para localhost, y funciona si entro manualmente IP, por ejemplo 192.168.1.106, sin embargo, ¿cómo puedo dejarlo abierto a todos? o estoy usando el tipo de conexión incorrecto para esto?

Respuesta

28

Si desea enlazar a todas las direcciones IPv4 disponibles, especifique 0.0.0.0 como su dirección IP. Si está detrás de un enrutador y desea tener acceso a su socket a través de Internet, en lugar de solo estar disponible en su LAN, deberá configurar una regla de reenvío de puerto para que los usuarios fuera de su LAN puedan acceder al servicio.

Véase la siguiente pregunta ServerFault para obtener más información sobre 0.0.0.0: https://serverfault.com/questions/78048/whats-the-difference-between-ip-address-0-0-0-0-and-127-0-0-1

+0

¡Muchas gracias! – Trent

+0

¡Una guía muy clara! –

+0

¿Es posible enlazar a ips completamente personalizados como 152.64.87.9? – CMCDragonkai

4

enlaza a 0.0.0.0 permitirá que acepte conexiones desde cualquier dirección IPv4 que ir a ella.

9

El enlace a '' tiene el mismo efecto que '0.0.0.0' hace la transición a IPv6 más fácil.

Dependiendo del sistema operativo, la apertura de un socket socket.AF_INET6 escucha IPv4 e IPv6.

Cuestiones relacionadas