rtsp端口号_设置RTSP, RTP和RTCP端口号 | 学步园
1.设置RTSP端口号
设置RTSP端口号的处理位于ARTSPConnection.cpp文件中,首先从url中获取端口号,如果读取不到,则设置为默认端口554。代码处理如下:
ARTSPConnection::ParseURL(
const char *colonPos = strchr(host->c_str(), ':');
if (colonPos != NULL) {
unsigned long x;
if (!ParseSingleUnsignedLong(colonPos + 1, &x) || x >= 65536) { // rtsp端口必须小于65536
return false;
}
*port = x;
size_t colonOffset = colonPos - host->c_str();
size_t trailing = host->size() - colonOffset;
host->erase(colonOffset, trailing);
} else {
*port = 554; // 如果从url中获取不到端口,则设置默认端口554
}
--------------------------------------------------------------------------------------------------------
2.设置RTP和RTCP端口号
设置RTP和RTCP端口号的处理位于ARTPConnection.cpp文件中中,与设置RTSP端口号的处理分别在不同的文件中。
(1)函数声明:创建一对相邻端口的UDP数据报套接字。rtp套接字是偶数端口,rtcp套接字端口比rtp端口号大一个号。// Creates a pair of UDP datagram sockets bound to adjacent ports
// (the rtpSocket is bound to an even port, the rtcpSocket to the
// next higher port).
static void MakePortPair(
int *rtpSocket, int *rtcpSocket, unsigned *rtpPort);
(2)函数定义:具体设置RTP和RTCP端口// static
void ARTPConnection::MakePortPair(
int *rtpSocket, int *rtcpSocket, unsigned *rtpPort) {
*rtpSocket = socket(AF_INET, SOCK_DGRAM, 0);
CHECK_GE(*rtpSocket, 0);
bumpSocketBufferSize(*rtpSocket);
*rtcpSocket = socket(AF_INET, SOCK_DGRAM, 0);
CHECK_GE(*rtcpSocket, 0);
bumpSocketBufferSize(*rtcpSocket);
unsigned start = (rand() * 1000)/ RAND_MAX + 15550; // 最小端口号为15550
start &= ~1; // 与1取反后的值做与操作,结果就是start变成偶数,端口从偶数开始
for (unsigned port = start; port < 65536; port += 2) { // rtp最大端口号为65535,此时rtcp端口号为65536
struct sockaddr_in addr;
memset(addr.sin_zero, 0, sizeof(addr.sin_zero));
addr.sin_family = AF_INET;
addr.sin_addr.s_addr = htonl(INADDR_ANY);
addr.sin_port = htons(port);
if (bind(*rtpSocket,
(const struct sockaddr *)&addr, sizeof(addr)) < 0) {
continue;
}
addr.sin_port = htons(port + 1);
if (bind(*rtcpSocket,
(const struct sockaddr *)&addr, sizeof(addr)) == 0) {
*rtpPort = port;
return; // 绑定rtcp端口后返回
}
}
TRESPASS();
}
rtsp端口号_设置RTSP, RTP和RTCP端口号 | 学步园相关推荐
- rtsp端口号_常见网络摄像机(摄像头)的端口及RTSP地址
海康威视 默认IP地址:192.168.1.64/DHCP 用户名admin 密码自己设 端口:"HTTP 端口"(默认为 80)."RTSP 端口"(默认为 ...
- mysql有多少个端口号_查看mysql端口号(mysql端口号是多少)
查看mysql端口号(mysql端口号是多少) 2020-05-07 22:11:45 共10个回答 如何查看mysql的端口号 1使用命令showglobalvariableslike'port'; ...
- 【Java 网络编程】服务器端 ServerSocket 配置 ( 端口复用 | 缓冲区设置 | 超时时间 | 性能权重 | 端口绑定 )
文章目录 I ServerSocket 端口号绑定参数 II ServerSocket 复用绑定端口设置 III ServerSocket 设置缓冲区大小 IV ServerSocket 设置超时时间 ...
- 路由器上端口转发_如何在路由器上转发端口
路由器上端口转发 Although modern routers handle most functions automatically, some applications will require ...
- 老年机按键串号_手机拨号键盘上的*号和#号到底有什么用?一般人只知道前三个...
手机拨号键盘上的*号和#号到底有什么用?一般人只知道前三个. *号和#号由来 *号和#号的由来要从电话的发明说起,键盘上除了0-9十个数字,还配有*号和#号,构成3×4的阵列,这种排列方式比较工整,如 ...
- java怎么录入4位会员号_[Java源码]键盘输入会员卡号,对其格式、位数进行判断,不符合规则会跳转重新输入 | 学步园...
4位数的会员卡号,活动期间,4位数字求平均值为5,则商品免费 -----------------------背景-------------------------------分割线---------- ...
- python文本文件每行加上行号_在python中如何加入行号?
python添加行号:filename='demo.py' with open(filename,'r')as fp: lines=fp.readlines() #读取所有行 maxLength=ma ...
- java 小程序 公众号_如何玩转小程序+公众号?手把手教你JeeWx小程序CMS与公众号关联...
随着微信小程序新功能.新入口的不断更新,小程序的商业价值逐步增强,特别是小程序与公众号的深度融合,已经让小程序成为各行业新的营销渠道.Jeewx平台专注小程序的开发,逐步完善小程序生态圈,通过简单操作 ...
- charles 抓 app 请求,设置端口,手动设置手机代理IP 、端口,增加监控的网址,并在手机安装证书防止乱码
1. 连接手机设置proxy setting的端口号以及手机的IP 代理端口 1.1步骤 1)proxy setting,查看charles,端口 勾选上上面的 ,点击确定 2)ipconfig,查 ...
最新文章
- 独家 | 盘点9个适用所有学科的R数据可视化包(附链接)
- HDU - 2825 Wireless Password (AC自动机 + 状压dp)
- 函数式编程的兴衰与当前之崛起
- C++ STL容器值set
- vue element container 子路由
- linux lsof
- pandas.Series.isin
- Exchange 2010 无法删除第一个mailbox
- 责任分配矩阵和raci的区别_有限责任公司实现盈利,当年就一定可以分红吗?...
- 科技经济调整td-scdma中国
- [源码和文档分享]基于QT的英文文献的编辑与检索系统的实现
- jsoup爬虫发送get、post请求、解析html、获取json
- GVRP和VTP的比较与区别
- 更干净的PC电源,还能净化空气,艾湃电竞AP-550Ti电源上手
- UE学习笔记(一)UC++基础类
- sql server 2008 r2服务器无法启动,怎么办
- 项目管理(如何进行项目质量管理)
- 新闻爬虫及爬取结果查询网站的搭建(一)
- windows防火墙配置(以windows server2008为例)
- 配置基于区域策略的防火墙
热门文章
- LaTeX自定义字体安装:Latex模板使用Windows-Stix-fontinstaller安装Wiley stix-fonts字体出错
- 初学者学习3D古风游戏场景系列,掌握这几个步骤,轻松拿下
- Java锁——可重入锁(递归锁)
- 小水滴v2.0网站导航模板源码去授权和谐版
- 投资回报率业内最高!FortiGate在CyberRatings防火墙独立测试中收获近乎完美表现
- 明日方舟服务器维护结束时间,明日方舟9月18日12:00服务器停机维护通知_明日方舟9月18日更新了什么_玩游戏网...
- springboot项目打成公共jar包被其他项目单独引用(包含mybatis-plus)
- oracle包被锁,Oracle开发包被锁解决办法-终极办法
- renderCommnet是什么意思
- iDNA-ABF:DNA甲基化可解释预测的多尺度深度生物语言学习模型