Python socket bind to any IP?

Posted on

Question :

Python socket bind to any IP?

I have a small one sided message sender that works while I specify the IP to connect to in code, however, I am having trouble allowing the socket to accept connections from any IP. Here is the line that is the problem.

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

The '' is for localhost, and it works if I manually enter IP, eg '192.168.1.106', however, how can I leave it open to all? Or am I using the wrong connection type for this?

Asked By: Trent

||

Answer #1:

If you want to bind to all available IPv4 addresses, specify 0.0.0.0 as your IP address. If you’re behind a router and wish to have your socket internet-accessible, rather than just available on your LAN, you’ll need to set up a port forwarding rule so that users outside your LAN can access the service.

See the following ServerFault question for more info on 0.0.0.0: https://serverfault.com/questions/78048/whats-the-difference-between-ip-address-0-0-0-0-and-127-0-0-1

Answered By: Polynomial

Answer #2:

Binding to '' has the same effect as to '0.0.0.0' makes the transition to IPv6 easier.

Depending on the OS, opening a socket.AF_INET6 socket listens to IPv4 and IPv6.

Answered By: glglgl

Answer #3:

Binding to 0.0.0.0 will allow it to accept connections from any IPv4 address that can route to it.

Leave a Reply

Your email address will not be published. Required fields are marked *