我有一个连接到 Flash Media Server 的简单 Flash 客户端,我希望能够模拟客户端执行以下操作:
- 尝试连接到端口 1935 上的 RTMP 流并失败,
- 在端口 443 上回退到 RTMP 并失败,
- 在端口 80 上回退到 RTMP 并失败,最终
- 通过端口 80 回退到 RTMPT (HTTP) 并成功。
这应该是 Flash 播放器的默认行为,例如,如下所述:
在许多情况下,这就是您在不使用 HTTP 隧道的情况下通过许多防火墙所需的全部内容。这是因为 NetConnection 对象中内置了一个功能。如果您没有在 RTMP 地址中指定端口号,Macromedia Flash 将尝试连接到端口 1935。如果失败,它将尝试连接到端口 443;如果失败,它将尝试端口 80。因此,如果您未在 RTMP 地址中指定端口,则无需编码即可访问端口 1935、443 或端口 80。
在这里:
连接到 FMS 时,您将在客户端使用 netConnection 对象,在 connect 方法的参数中,您可以设置要使用的协议:nc.connect("rtmp://whatever")。如果这样做,请注意 Flash 播放器将通过不同的端口和协议循环尝试自动连接。当然,您可以通过更改 rtmp 部分来设置要使用的协议。Flash 播放器将尝试通过端口 1935 连接到 rtmp,然后是端口 80,然后它会尝试通过端口 80 连接到 rtmpt(如下所述)。
我在 Windows 7 机器上,基本上我正在寻找有关如何模拟 Flash 无法连接到任何端口上的 RTMP 流并回退到 RTMPT 的环境的提示。Windows 防火墙似乎允许设置“协议号”(除了通常的端口号——例如,TCP 为 6、UDP 17 等),但我似乎找不到 RTMP 的协议号。
如果有人对我如何简单地模拟这种行为有任何建议,我将不胜感激。提前谢谢了。