FMS (端口问题)如何穿透防火墙

2024-05-11 08:58

本文主要是介绍FMS (端口问题)如何穿透防火墙,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

1111是管理端口,就是fms2_console文件连接到server远程管理的时候需要用到的。
首先明确关系:

  • RTMP (默认端口:1935)
  • RTMPT ( http 隧道 - 默认端口: 80)
  • RTMPS ( https 隧道- 默认端口: 443)
  • nc.connect( "rtmp://127.0.0.1:1935/myapp");
  • nc.connect( "rtmpt://127.0.0.1:80/myapp");
  • nc.connect( "rtmps://127.0.0.1:443/myapp");

rtmps用得很少。。。

连接为难题:
fms_nc.connect("rtmp://127.0.0.1/test"); 
这行代码会自动尝试RTMP:1935 以及 RTMPT:80 两种连接方式。
如果你想提高效率,指定端口来连接,那么就这样写:
fms_nc.connect("rtmp://127.0.0.1:1935/test"); 这样他不会再尝试其他端口。说明:127.0.0.1是本地网关地址

当然你会问如果要改成其他端口,在哪里可以更改:
X(c/d..):\Program Files\Macromedia\Flash Media Server 2\conf\_defaultRoot_\Adaptor.xml
第42行:
修改为:<HostPort>:1935,443,8080</HostPort>或者你想要的:<HostPort>:8080,80</HostPort>
如果你的server有多个ip:
<HostPort>XXX.XXX.XXX.XXX:1935, 443, 80</HostPort>
然后重启FMS(先stop,再start),如果你的iis或者web站点占用了80,那么会报错,更改端口为空闲的端口。

协议:
rtmp 全名为:real time message protocol
如果rtmp的连接方式失败(通常是防火墙阻止了该协议),那么flash可以使用rtmpt协议来建立
HTTP tunneling.
fms_nc.connect("rtmpt://ip/test") 
就可以连接成功了。


若防火墙关闭了1935,只允许80端口。那么此时你需要这么写:fms_nc.connect("rtmpt://ip:80/test")

防火墙允许1935、80端口。

服务器端我们如果可以控制,当然会尽可能的打开常用端口,当然也会允许rtmp协议。如果问题出现在客户端呢?看下图:


客户端只允许80端口,那么此时只有80端口可以连接成功。

总结:
鉴于客户端端口以及协议的不确定性,你需要准备好处理各种情况:
思路如下:
1、<HostPort>:1935,8080,80</HostPort>
2、默认使用rtmp协议以及1935、8080、80来连接,尝试2次。如果仍然failed,那么:
3、使用rtmpt协议(HTTP tunneling)来连接。

//开始
fms_nc.connect("rtmp://127.0.0.1/test"); //会自动尝试可以使用的端口
//在onStatus函数里面监测状态 如果连续两次failed,
fms_nc.connect("rtmpt://127.0.0.1:8080/test")
//结束
通过HTTP tunneling建立的连接在传输视频的时候会不稳定,所以你要时刻监测nc的状况,如果断开要自动重连,简单的办法就是通过js刷新页面

这篇关于FMS (端口问题)如何穿透防火墙的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/979084

相关文章

zookeeper端口说明及介绍

《zookeeper端口说明及介绍》:本文主要介绍zookeeper端口说明,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录一、zookeeper有三个端口(可以修改)aVNMqvZ二、3个端口的作用三、部署时注意总China编程结一、zookeeper有三个端口(可以

怎样通过分析GC日志来定位Java进程的内存问题

《怎样通过分析GC日志来定位Java进程的内存问题》:本文主要介绍怎样通过分析GC日志来定位Java进程的内存问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录一、GC 日志基础配置1. 启用详细 GC 日志2. 不同收集器的日志格式二、关键指标与分析维度1.

Java 线程安全与 volatile与单例模式问题及解决方案

《Java线程安全与volatile与单例模式问题及解决方案》文章主要讲解线程安全问题的五个成因(调度随机、变量修改、非原子操作、内存可见性、指令重排序)及解决方案,强调使用volatile关键字... 目录什么是线程安全线程安全问题的产生与解决方案线程的调度是随机的多个线程对同一个变量进行修改线程的修改操

Redis出现中文乱码的问题及解决

《Redis出现中文乱码的问题及解决》:本文主要介绍Redis出现中文乱码的问题及解决,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录1. 问题的产生2China编程. 问题的解决redihttp://www.chinasem.cns数据进制问题的解决中文乱码问题解决总结

全面解析MySQL索引长度限制问题与解决方案

《全面解析MySQL索引长度限制问题与解决方案》MySQL对索引长度设限是为了保持高效的数据检索性能,这个限制不是MySQL的缺陷,而是数据库设计中的权衡结果,下面我们就来看看如何解决这一问题吧... 目录引言:为什么会有索引键长度问题?一、问题根源深度解析mysql索引长度限制原理实际场景示例二、五大解决

Springboot如何正确使用AOP问题

《Springboot如何正确使用AOP问题》:本文主要介绍Springboot如何正确使用AOP问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录​一、AOP概念二、切点表达式​execution表达式案例三、AOP通知四、springboot中使用AOP导出

Python中Tensorflow无法调用GPU问题的解决方法

《Python中Tensorflow无法调用GPU问题的解决方法》文章详解如何解决TensorFlow在Windows无法识别GPU的问题,需降级至2.10版本,安装匹配CUDA11.2和cuDNN... 当用以下代码查看GPU数量时,gpuspython返回的是一个空列表,说明tensorflow没有找到

解决未解析的依赖项:‘net.sf.json-lib:json-lib:jar:2.4‘问题

《解决未解析的依赖项:‘net.sf.json-lib:json-lib:jar:2.4‘问题》:本文主要介绍解决未解析的依赖项:‘net.sf.json-lib:json-lib:jar:2.4... 目录未解析的依赖项:‘net.sf.json-lib:json-lib:jar:2.4‘打开pom.XM

IDEA Maven提示:未解析的依赖项的问题及解决

《IDEAMaven提示:未解析的依赖项的问题及解决》:本文主要介绍IDEAMaven提示:未解析的依赖项的问题及解决,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝... 目录IDEA Maven提示:未解析的依编程赖项例如总结IDEA Maven提示:未解析的依赖项例如

前端如何通过nginx访问本地端口

《前端如何通过nginx访问本地端口》:本文主要介绍前端如何通过nginx访问本地端口的问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录一、nginx安装1、下载(1)下载地址(2)系统选择(3)版本选择2、安装部署(1)解压(2)配置文件修改(3)启动(4)