我无法连接到外部设备上的Bottle服务器

问题描述

我正在尝试使Python中的Bottle服务器正常工作。这是我的代码

from bottle import route,run,template
from socket import gethostname,gethostbyname
from time import sleep

ip = str(gethostbyname(gethostname()))

@route('/')
def index():
    return 'Hello World!'

run(host=ip,port=1234)

我运行此程序,并在运行它的计算机上导航至http://127.0.1.1:1234/,并显示Hello World!显示我的网站。 但是,如果我尝试通过手机或姐姐的Chromebook连接到该网站,则表明该网站拒绝连接。 我曾尝试用str(gethostbyname(gethostname()))'0.0.0.0'替换'localhost',但是没有一个起作用。

解决方法

摆脱这一行;没必要:

ip = str(gethostbyname(gethostname()))

使您的run行看起来像这样:

run(host='0.0.0.0',port=1234)

地址0.0.0.0的意思是“听所有地址”。

最后,找出运行您的应用程序的主机的网络地址。然后,同一网络上的其他设备应该能够连接到<that ip address>:1234。如果您拥有可公开路由的地址(或者如果您打算从具有公共地址的路由器转发适当的端口),则不在同一网络上的设备将只能连接到服务。

您将要确保运行您的应用程序的系统没有防火墙规则,否则将无法成功进行连接。