当前位置: 首页 > 知识库问答 >
问题:

Python Socket服务器:无法通过internet连接

周良弼
2023-03-14

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

当我试图让任何其他计算机连接到它,它从来没有连接,我感到茫然和需要想法。

我使用谷歌chrome连接,就像我之前说的,它工作很好,但只在我的电脑上

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个答案

傅恺
2023-03-14

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

更改此行:

host, port = socket.gethostname(), 30001

致:

host, port = "0.0.0.0", 30001
 类似资料:
  • 我一直在寻找一个解决办法,但没有找到一个有效的解决办法。 我已经在我的MacBook中使用brew安装了postgres(),并且我目前正在使用brew服务运行它(将postgres显示为正在运行的服务)。但是,当我尝试运行时,我得到以下错误。 PSQL:无法连接到服务器:没有这样的文件或目录是本地运行并接受Unix域套接字“/tmp/.s.pgsql.5432”上的连接的服务器吗? 有人已经解决

  • 我的入口pod无法通过IP访问两个集群IP服务。有很多其他集群IP服务它没有到达困难。包括在同一个命名空间中。另一个pod到达服务没有问题(我在同一个命名空间中尝试了默认后端,一切正常)。 我应该去哪里?以下是我的实际服务,它无法到达第一个,但可以到达第二个: 我的入口吊舱:

  • 我最近尝试用自制软件安装MySQL(),当我尝试运行它时,我遇到以下错误: 错误2002(HY000):无法通过套接字'/tmp/mysql.sock'连接到本地MySQL服务器(2) 没有

  • 我使用下面提到的连接URL连接到蜂巢服务器使用直线。 !连接jdbc: hive2://sandbox.hortonworks.com:21000/default; ssl=true; sslTrustStore=/var/lib/Knox/data-2.3.2.0-2950/Security/keystore/gateway.jks; Trust StorePassword=Knox?hive.

  • Linux服务器/etc/ssh/sshd_config已开启密码验证, 但是ssh连接Linux服务器,为何直接报错?根本没出现用户名及密码输出提示符?

  • 问题内容: 上传或提交页面时,我的网站上出现以下错误: mysql_real_escape_string()[function.mysql-real-escape- string]:无法通过套接字’/var/lib/mysql/mysql.sock’连接到本地MySQL服务器(2) 这到底是什么意思? 问题答案: 由于对该错误的调用引发了错误,因此它意味着您没有先调用该错误并将有效的数据库句柄传递