我使用python的基本http服务器运行服务器。使用的主机名是“127.0.0.1”本地主机,端口号设置为8000.我有运行此服务器的计算机的公共IP地址。 如果我想从另一台计算机向此发送一个http get请求,我会在浏览器中输入什么内容?
答案 0 :(得分:1)
听起来你的服务器进程在错误的界面上运行了。 127.0.0.1不是主机名,而是 IP地址,特别是本地环回地址。无法从任何其他计算机访问它(除非您的网络配置出现问题)。
您可以在127.0.0.1界面上运行任何您喜欢的内容,而其他任何人都无法从远程计算机直接连接到它。这一点非常重要 - 它用于测试使用互联网协议的程序,以及(近年来)用于启动单用户服务器而不用担心安全问题。 (Python 2' s SimpleHTTPServer
和一些个人wiki一样,我认为是iPython Notebook。)
运行Web服务器的主机的公共地址是一个完全不相关的网络接口,它有自己的硬件和自己的端口8000.它不知道或不关心你&#39 ;有些东西在某些其他接口的端口8000上监听,所以它应该拒绝连接到该端口的尝试。
由于您没有发布任何代码,我不知道您需要更改什么才能使服务器在正确的界面上运行。假设您或多或少遵循example in the BaseHTTPServer.HTTPServer
docs:
def run(
server_class=BaseHTTPServer.HTTPServer,
handler_class=BaseHTTPServer.BaseHTTPRequestHandler,
):
server_address = ('', 8000) # <----= Replace the string.
httpd = server_class(server_address, handler_class)
httpd.serve_forever()
server_address
元组是一个包含IP地址('1.2.101.202'
或其他)的字符串,后跟一个整数端口号。所以将字符串替换为主机的面向公众的IP地址。
请注意,端口8000超出保留范围(0到但不包括1024),因此某些不相关的服务可能已在使用该端口。 (Numerous applications已经蹲在端口8000.)如果是这样,您只需要选择另一个端口号。您可以选择从1024到最高但不包括65536的任何内容,但与8000一样,其他人可能已经在使用它。
根据您的操作系统及其安全设置,您可能没有权限打开侦听任意端口号的套接字。如果是这样,那就是你和你的ISP或系统管理员之间的。
答案 1 :(得分:0)