因此,我对python服务器有些陌生,我编写了一个简单的程序将消息发送到服务器。当我将主机设置为192.168.x.x
时它可以工作,但是我尝试使用ngrok,这样,如果我在另一个网络上,就可以访问服务器。但是我似乎无法弄清楚如何使其工作。这可能也不是最好的方法,因此,如果有人可以提出更好的更好的方法,但现在我有了:
托管在192.168.x.x:8080上的服务器
转发到我的IP的ngrok隧道
和一个将数据发送到该ngrok地址的客户端程序
这是主机代码:
import socketserver
class 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 socket
with 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"))
ngrok是:
Forwarding http://urlhere.ngrok.io -> http://192.168.x.x
注意:这在不使用ngrok而是使用计算机IP的情况下有效,因此我知道主机不是问题
没有错误,但服务器似乎没有响应
谢谢!
答案 0 :(得分:1)
我对ngrok不熟悉,但是在本地托管代码时,我发现将服务器中的HOST更改为:
HOST, PORT = "0.0.0.0", 8080
...或者实际的本地IP给了我预期的响应。