1

据我了解,不可能简单地在 NAT 后面的设备上实现休息 Web 服务。所以我正在为此寻找一些解决方案。

是否可以使用long polling来实现网络服务?这样,本地设备将调用远程客户端(这正是我想要的),客户端必须保持连接打开(保持活动状态?),直到客户端想要调用 web 服务方法。它可以这样做,因为连接仍然打开。通话后,客户端将立即向客户端发送另一个轮询......等等。是否可以这样实现?

我遇到的另一个解决方案:

ReverseHTTP - 我对此不太了解,但听起来我可以用这个实现网络服务。正确的?

还有其他几种解决方案,例如 TURN 或 STUN,但它们似乎非常复杂。

你有什么建议吗?我在我的网络设备上使用 c++/linux。

编辑:端口转发不是一个选项。

4

2 回答 2

1

在这个问题中,您有很多不同的概念。您当然可以在防火墙/NAT 后面实现 RESTful 服务……您只需要配置防火墙/NAT 以将连接转发到您的服务。存在防火墙/NAT 设备连接超时的问题……再次,您可以将设备配置为不这样做,或者您可以使用某种“保持活动”来更新您的通信机制。“长轮询”有点不相关,它被用作从服务器获取“交互式响应”的一种方式......基本上,服务器坐在来自客户端的轮询请求上,直到它有东西要响应,或者请求超时,客户再做一次。STUN 和 TURN 是更多与语音/视频通信相关的技术。

于 2013-08-14T16:14:43.907 回答
0

You don't say what transfer protocol you are using, I'm assuming HTTP.

HTTP uses TCP/IP, so your device NAT needs to redirect the connection request to your server.

There's others ways, like if you have more than one internet IP address, so the requests could be directed to the server too, but thats more complicated than port forward so I think its not what you have.

So basically you need to configure the port forward. Take it like a PABX, calls from the exterior lines needs to know a ramal to reach a phone, thats a distant mean to think of it.

And as said, the suggestions you said, are not intended for that, is mainly for client connection, what for many NAT is not necessary, as the NAT is prepared for doing that.

于 2013-08-14T16:48:28.880 回答