Python套接字服务器:无法通过互联网连接

时间:2015-02-27 23:59:36

标签: python sockets

所以我为自己建立了一个小型服务器应用程序来增强我的简历,但我有一个我无法弄清楚的问题

据我所知,我的服务器运行正常,因为我(仅在我自己的计算机上)可以连接到服务器。

一旦我试图让任何其他计算机连接到它,它就永远不会连接,我不知所措,需要创意。

我使用谷歌浏览器进行连接,就像我之前说的那样,它工作得很好,但只能在我的电脑上使用

import sys
import socket

serversocket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
print('Socket created.')

host, port = socket.gethostname(), 30001

try:
    serversocket.bind((host, port))
except socket.error as msg:
    print('Binding failed, Error: ' + str(msg[0]) + '\nMessage: ' + msg[1])
    sys.exit()
print('Binding complete.')
print('Host name:\t ' + str(host) + '\nIP:\t\t ' + str(socket.gethostbyname(host)) + '\nPort: \t\t ' + str(port))

serversocket.listen(5)
print('Socket Listening...')

while True:
    socketConnection, addr = serversocket.accept()
    print('Connection established.')
    dataRecieved = socketConnection.recv(2048)
    print(dataRecieved)
    socketConnection.send("Sup Doooood")

1 个答案:

答案 0 :(得分:1)

套接字绑定到localhost,因为您指定了host = socket.gethostname(),并且您的主机名已解析为localhost。您必须将套接字绑定到host = "0.0.0.0"才能使其可以从任何外部主机访问。

更改此行:

host, port = socket.gethostname(), 30001

为:

host, port = "0.0.0.0", 30001