Question :
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?
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
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.
Answer #3:
Binding to 0.0.0.0 will allow it to accept connections from any IPv4 address that can route to it.