2011-11-07 15 views
17

Ho un piccolo mittente unilaterale che funziona mentre si specifica l'ip per connettersi al codice, tuttavia, sto avendo problemi a consentire al socket di accettare connessioni da qualsiasi IP. Ecco la linea che è il problema.Il socket Python si collega a qualsiasi IP?

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

Il '' è per il localhost, e funziona se entro manualmente IP, ad esempio 192.168.1.106, tuttavia, come posso lasciarlo aperto a tutti? o sto usando il tipo di connessione sbagliata per questo?

risposta

28

Se si desidera associare tutti gli indirizzi IPv4 disponibili, specificare 0.0.0.0 come indirizzo IP. Se sei dietro un router e desideri avere la tua presa di accesso a internet, anziché solo disponibile sulla tua LAN, dovrai impostare una regola di port forwarding in modo che gli utenti esterni alla tua LAN possano accedere al servizio.

vedere la seguente domanda ServerFault per più informazioni 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

Grazie mille !! – Trent

+0

Guida molto chiara! –

+0

È possibile associare ips completamente personalizzati come 152.64.87.9? – CMCDragonkai

4

Binding a 0.0.0.0 permetterà di accettare connessioni da qualsiasi indirizzo IPv4 che può indirizzare ad esso.

9

Il collegamento a '' ha lo stesso effetto di '0.0.0.0' rende più semplice la transizione a IPv6.

A seconda del sistema operativo, l'apertura di un socket socket.AF_INET6 resta in ascolto su IPv4 e IPv6.

Problemi correlati