Reputation: 8335
I used python's socket module and tried to open a listening socket using
import socket
import sys
def getServerSocket(host, port):
for r in socket.getaddrinfo(host, port, socket.AF_UNSPEC,
socket.SOCK_STREAM, 0, socket.AI_PASSIVE):
af, socktype, proto, canonname, sa = r
try:
s = socket.socket(af, socktype, proto)
except socket.error, msg:
s = None
continue
try:
s.bind(sa)
s.listen(1)
except socket.error, msg:
s.close()
s = None
continue
break
if s is None:
print 'could not open socket'
sys.exit(1)
return s
Where host was None and port was 15000.
The program would then accept connections, but only from connections on the same machine. What do I have to do to accept connections from the internet?
Upvotes: 4
Views: 5765
Reputation: 43527
The first problem is that your except blocks are swallowing errors with no reports being made. The second problem is that you are trying to bind to a specific interface, rather than INADDR_ANY. You are probably binding to "localhost" which will only accept connections from the local machine.
INADDR_ANY is also known as the constant 0x00000000, but the macro is more meaningful.
Assuming you are using IPv4 (that is, "regular internet" these days), copy the socket/bind code from the first example on the socket module page.
Upvotes: 5
Reputation: 9082
You'll need to bind to your public IP address, or "all" addresses (usually denoted by "0.0.0.0").
If you're trying to access it across a network you also might need to take into account firewalls etc.
Upvotes: 2