使用 ngrok 访问 python 服务器(Web 服务器)



我有一个python网络服务器代码。

import socket
HOST, PORT = '', 5000
listen_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
listen_socket.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
listen_socket.bind((HOST, PORT))
listen_socket.listen(1)
print('Serving HTTP on port %s ...' % PORT)
while True:
client_connection, client_address = listen_socket.accept()
request = client_connection.recv(1024)
print(request)
http_response = """
HTTP/1.1 200 OK
Content-Type: text/html; charset=utf-8
<H1>Hello, World!</H1>
"""
client_connection.sendall(http_response.encode())
client_connection.close()

我有一个访问服务器的客户端代码。

import socket
HOST = '127.0.0.1'
PORT = 5000        # The port used by the server
try: 
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM) 
print "Socket successfully created"
s.connect((HOST, PORT))
s.sendall('GET /')
data = s.recv(1000)
print('Received', repr(data))
s.close
except socket.error as err: 
print "socket creation failed with error %s" %(err)

当我执行服务器和客户端时,它可以正常工作。

Socket successfully created
('Received', "'HTTP/1.1 200 OK\nContent-Type: text/html; charset=utf-8\n\n<H1>Hello, World!</H1>\n'")

然后,我尝试使用ngrok.执行 python 服务器

Session Status                online
Account                       ...
Version                       2.3.34
Region                        United States (us)
Web Interface                 http://127.0.0.1:4040
Forwarding                    http://d2fccf7f.ngrok.io -> http://localhost:5000

使用curl,我可以用ngrok访问网络服务器。

> curl http://d2fccf7f.ngrok.io 
<H1>Hello, World!</H1>

但是,当我尝试使用相同的客户端代码并进行细微修改时,服务器似乎没有响应。

import socket
ip = socket.gethostbyname('d2fccf7f.ngrok.io')
print(ip)
HOST = ip
PORT = 5000 
# the rest of the code is the same

我将端口更改为 80 或 8080,但我得到了相同的结果。

可能出了什么问题?

我可以建议尝试类似pyngrok的东西来编程地管理您的ngrok隧道吗?完全披露,我是它的开发者。套接字和其他 TCP 示例在这里。

根据 oguz ismail 的提示,我制作了以下 REQUEST 标头以使其工作。我看到主机信息和空行应该是必需的。

try: 
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM) 
print "Socket successfully created"
s.connect((HOST, PORT))
header = '''GET / HTTP/1.1rnHost: d2fccf7f.ngrok.iornrn'''
...

相关内容

  • 没有找到相关文章

最新更新