我有一个raspberry pi,它被设置为音频流服务器。我使用websockets和python作为编程语言。客户端可以通过连接到raspberry pi上托管的服务器来收听实况音频流。该系统在本地主机环境下运行良好。现在,我想从互联网上访问服务器,通过搜索我了解了STUN。我尝试使用pystun,但我无法获得用于NAT穿孔的正确端口。所以有人能帮我实现STUN吗?注意:服务器正在监听localhost:8000
发布于 2017-02-26 02:11:45
仅用谷歌搜索STUN Python就会得到这样的结果:
https://pypi.python.org/pypi/pystun
转到该页面的底部,您将找到源代码的链接。解压后,核心STUN代码就在__init__.py文件中。
回到你的音频服务器。如果它是真正的客户端/服务器协议,并且只使用一个端口进行所有通信,那么就不需要STUN本身。您只需要在您的NAT上打开一个端口,这样来自外部世界的任何客户端都可以连接。如果协议比较复杂(端口是以点对点的方式动态协商的),那么您需要在直接连接到Internet的信令协议服务之上使用STUN之类的东西。
发布于 2020-10-03 03:42:50
NAT穿孔用于点对点(P2P)通信,而您的音频流服务器似乎是一个客户端-服务器实现。
这在很大程度上取决于您的NAT设备(实现了哪种类型的NAT )。你的NAT设备超时时间短的可能性很高,你需要为每个客户端连接打孔(从你的树莓派)。
正如你所说的,你正在使用WebSockets,而这些总是TCP,pystun是不会工作的,因为pystun只支持UDP。
我建议在你的NAT设备中创建一个端口转发,使用P2P虚拟专用网络隧道你的流量,或者在不同的网络上托管你的音频流服务器。
https://stackoverflow.com/questions/42453445
复制相似问题