为了账号安全,请及时绑定邮箱和手机立即绑定

python套接字连接到ngrok服务器

python套接字连接到ngrok服务器

慕森王 2024-01-27 15:05:11
所以我对 python 服务器有点陌生,我制作了一个简单的程序来向服务器发送消息。当我将主机设置为192.168.x.x但我尝试使用 ngrok 时它可以工作,这样如果我在另一个网络上我就可以访问服务器。但是我似乎不知道如何让它发挥作用。这也可能不是最好的方法,所以如果有人能提出更好的方法,那就太好了,但现在我有:托管在 192.168.xx:8080 上的服务器转发到我的 IP 的 ngrok 隧道以及将数据发送到该 ngrok 地址的客户端程序这是主机代码:import socketserverclass MyTCPHandler(socketserver.BaseRequestHandler):    def handle(self):        # self.request is the TCP socket connected to the client        self.data = self.request.recv(1024).strip()        print("{} wrote:".format(self.client_address[0]))        print(self.data)if __name__ == "__main__":    HOST, PORT = "192.169.x.x", 8080    server = socketserver.TCPServer((HOST, PORT), MyTCPHandler)    server.serve_forever()这是客户端:import socketwith socket.socket(socket.AF_INET, socket.SOCK_STREAM) as sock:    ip = socket.gethostbyname('http://urlgoeshere.ngrok.io')    print(ip)    sock.connect((ip, 8080))    sock.sendall(bytes("hello" + "\n", "utf-8"))恩格罗克是:Forwarding                    http://urlhere.ngrok.io -> http://192.168.x.x注意:当我使用我的计算机 IP 而不是使用 ngrok 时,这有效,所以我知道这不是主机的问题没有错误,但服务器似乎没有响应
查看完整描述

3 回答

?
MMTTMM

TA贡献1869条经验 获得超4个赞

我不熟悉 ngrok,但在本地托管您的代码我发现将服务器中的 HOST 更改为:

HOST, PORT = "0.0.0.0", 8080

...或者实际的本地 IP 给了我预期的响应。


查看完整回答
反对 回复 2024-01-27
?
隔江千里

TA贡献1906条经验 获得超10个赞

套接字在 tcp 协议上工作,但您尝试使用 http。我通过 LogMeIn Hamachi 解决了这个问题。它与套接字完美配合。您也可以使用 ngrok,但需要升级到 Pro 或 Business 计划才能使用 tcp。


查看完整回答
反对 回复 2024-01-27
?
一只名叫tom的猫

TA贡献1906条经验 获得超2个赞

使用 ngrok 3.5.0(也可能是早期版本),您可以免费使用 tcp。


启动ngrok:./ngrok tcp 8080


...

Forwarding                    tcp://0.tcp.ngrok.io:19906 -> localhost:8080

...

然后在您的客户端代码中使用:


HOST, PORT = "0.tcp.ngrok.io", 19906

with socket.socket(socket.AF_INET, socket.SOCK_STREAM) as s:

    s.connect((HOST, PORT))

    ...


查看完整回答
反对 回复 2024-01-27
  • 3 回答
  • 0 关注
  • 64 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信