将http get请求发送到具有已知公共IP的服务器

时间:2015-06-30 07:31:55

标签: python ip server

我使用python的基本http服务器运行服务器。使用的主机名是“127.0.0.1”本地主机,端口号设置为8000.我有运行此服务器的计算机的公共IP地址。 如果我想从另一台计算机向此发送一个http get请求,我会在浏览器中输入什么内容?

2 个答案:

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

http://yourip:port/func

yourip是你的公共IP。 港口是8080

func是您的注册功能。

并确保您的端口已打开