我有一个简单的Flash客户端连接到,我希望能够模拟客户机执行以下操作:
这应该是Flash的默认行为,例如如前所述
在许多情况下,这是您在不使用HTTP隧道的情况下通过许多防火墙所需要的全部。这是因为在NetConnection对象中内置了一个特性。当您没有在RTMP地址中指定端口号时,Macromedia Flash将尝试连接到端口1935。如果失败,它将尝试连接到端口443;如果失败,它将尝试端口80。因此,如果您没有在RTMP地址中指定端口,则不需要对端口1935、443或端口80进行编码。
还有这里
当连接到FMS时,您将在客户端使用netConnection对象,在connect方法的参数范围内,您可以设置要使用的协议:nc.connect(“rtmp://什么”)。如果这样做,应该注意闪存播放器将循环通过不同的端口和协议,试图自动连接。当然,您可以通过更改rtmp部分来设置要使用的协议。 Flash将尝试通过端口1935连接到rtmp,然后通过端口80连接到rtmp,然后通过端口80尝试rtmpt (如下所述)。
我在Windows 7机器上,本质上我在寻找如何模拟Flash无法连接到任何端口上的RTMP流并返回到RTMPT的环境的技巧。Windows防火墙似乎允许设置“协议号”(除了通常的端口号--例如TCP是6、UDP 17等),但我似乎找不到RTMP的协议号。
如果有人对我如何简单地模拟这种行为有任何建议,我会非常感激的。在此之前,非常感谢您。
发布于 2011-03-07 13:18:15
我能够在Windows 7上使用Firefox完成这项工作,并在本地计算机(localhost)上运行代理服务器。我使用Windows防火墙阻止到端口1935、443和80的出站连接,用于进程的特定目的IP地址:“plugin-tainer.exe”。(请相信Firefox 3.6和更多地使用“plugin-收集器. the”来运行Flash插件。)然后我设置Windows系统代理设置(通过IE、Tools->Internet选项->Connections->LAN设置)来使用本地http代理服务器。有趣的是,Flash显然使用Windows代理设置,而不是Firefox的,即使在Firefox内部运行时也是如此。
发布于 2010-05-24 21:50:17
RTMP是建立在TCP之上的,所以您应该能够选择TCP和相应的端口来使用防火墙进行测试。
您需要为每个端口创建一个自定义规则。
name: RTMP Default (1935)
protocol: TCP
local port: any
remote port: 1935
local ip: any
remote ip: any
name: RTMP over 443
protocol: TCP
local port: any
remote port: 443
local ip: any
remote ip: any
name: RTMP over 80
protocol: TCP
local port: any
remote port: 80
local ip: any
remote ip: any然后将RTMP默认规则设置为阻止所有通信量,但将其他规则设置为允许。然后测试并确保它在端口443上失败。然后将RTMP over 443规则设置为块,并确保它在端口80上失败。
发布于 2010-06-17 15:16:39
您必须使用HTTP代理服务器中间层,该中介将为无效请求抛出HTTP错误。我不知道RTMP协议是如何做到这一点的,但我怀疑您可能错误地声称它在端口80上尝试RTMP,然后返回到相同端口上的RTMPT。这真的没什么意义。但是--如果真的是这样,我个人认为这是非常不可能的,而且我个人也不会设计一个协议,在同一个端口上使用两种不同的格式,那么您需要一个中间层,比如HTTP代理服务器,这是我在实践中看到这种情况的唯一现实方法。
https://stackoverflow.com/questions/2900547
复制相似问题