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端口号 | 学步园相关推荐

  1. rtsp端口号_常见网络摄像机(摄像头)的端口及RTSP地址

    海康威视 默认IP地址:192.168.1.64/DHCP 用户名admin 密码自己设 端口:"HTTP 端口"(默认为 80)."RTSP 端口"(默认为 ...

  2. mysql有多少个端口号_查看mysql端口号(mysql端口号是多少)

    查看mysql端口号(mysql端口号是多少) 2020-05-07 22:11:45 共10个回答 如何查看mysql的端口号 1使用命令showglobalvariableslike'port'; ...

  3. 【Java 网络编程】服务器端 ServerSocket 配置 ( 端口复用 | 缓冲区设置 | 超时时间 | 性能权重 | 端口绑定 )

    文章目录 I ServerSocket 端口号绑定参数 II ServerSocket 复用绑定端口设置 III ServerSocket 设置缓冲区大小 IV ServerSocket 设置超时时间 ...

  4. 路由器上端口转发_如何在路由器上转发端口

    路由器上端口转发 Although modern routers handle most functions automatically, some applications will require ...

  5. 老年机按键串号_手机拨号键盘上的*号和#号到底有什么用?一般人只知道前三个...

    手机拨号键盘上的*号和#号到底有什么用?一般人只知道前三个. *号和#号由来 *号和#号的由来要从电话的发明说起,键盘上除了0-9十个数字,还配有*号和#号,构成3×4的阵列,这种排列方式比较工整,如 ...

  6. java怎么录入4位会员号_[Java源码]键盘输入会员卡号,对其格式、位数进行判断,不符合规则会跳转重新输入 | 学步园...

    4位数的会员卡号,活动期间,4位数字求平均值为5,则商品免费 -----------------------背景-------------------------------分割线---------- ...

  7. python文本文件每行加上行号_在python中如何加入行号?

    python添加行号:filename='demo.py' with open(filename,'r')as fp: lines=fp.readlines() #读取所有行 maxLength=ma ...

  8. java 小程序 公众号_如何玩转小程序+公众号?手把手教你JeeWx小程序CMS与公众号关联...

    随着微信小程序新功能.新入口的不断更新,小程序的商业价值逐步增强,特别是小程序与公众号的深度融合,已经让小程序成为各行业新的营销渠道.Jeewx平台专注小程序的开发,逐步完善小程序生态圈,通过简单操作 ...

  9. charles 抓 app 请求,设置端口,手动设置手机代理IP 、端口,增加监控的网址,并在手机安装证书防止乱码

    1.  连接手机设置proxy setting的端口号以及手机的IP 代理端口 1.1步骤 1)proxy setting,查看charles,端口 勾选上上面的 ,点击确定 2)ipconfig,查 ...

最新文章

  1. 独家 | 盘点9个适用所有学科的R数据可视化包(附链接)
  2. HDU - 2825 Wireless Password (AC自动机 + 状压dp)
  3. 函数式编程的兴衰与当前之崛起
  4. C++ STL容器值set
  5. vue element container 子路由
  6. linux lsof
  7. pandas.Series.isin
  8. Exchange 2010 无法删除第一个mailbox
  9. 责任分配矩阵和raci的区别_有限责任公司实现盈利,当年就一定可以分红吗?...
  10. 科技经济调整td-scdma中国
  11. [源码和文档分享]基于QT的英文文献的编辑与检索系统的实现
  12. jsoup爬虫发送get、post请求、解析html、获取json
  13. GVRP和VTP的比较与区别
  14. 更干净的PC电源,还能净化空气,艾湃电竞AP-550Ti电源上手
  15. UE学习笔记(一)UC++基础类
  16. sql server 2008 r2服务器无法启动,怎么办
  17. 项目管理(如何进行项目质量管理)
  18. 新闻爬虫及爬取结果查询网站的搭建(一)
  19. windows防火墙配置(以windows server2008为例)
  20. 配置基于区域策略的防火墙

热门文章

  1. LaTeX自定义字体安装:Latex模板使用Windows-Stix-fontinstaller安装Wiley stix-fonts字体出错
  2. 初学者学习3D古风游戏场景系列,掌握这几个步骤,轻松拿下
  3. Java锁——可重入锁(递归锁)
  4. 小水滴v2.0网站导航模板源码去授权和谐版
  5. 投资回报率业内最高!FortiGate在CyberRatings防火墙独立测试中收获近乎完美表现
  6. 明日方舟服务器维护结束时间,明日方舟9月18日12:00服务器停机维护通知_明日方舟9月18日更新了什么_玩游戏网...
  7. springboot项目打成公共jar包被其他项目单独引用(包含mybatis-plus)
  8. oracle包被锁,Oracle开发包被锁解决办法-终极办法
  9. renderCommnet是什么意思
  10. iDNA-ABF:DNA甲基化可解释预测的多尺度深度生物语言学习模型