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?
Try 0.0.0.0. That's what's mostly used.
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.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With