接口调用简单成熟的RTSP-Server组件EasyRTSPServer支持IPV6的改造方法介绍
时间:2019-10-15
本文章向大家介绍接口调用简单成熟的RTSP-Server组件EasyRTSPServer支持IPV6的改造方法介绍,主要包括接口调用简单成熟的RTSP-Server组件EasyRTSPServer支持IPV6的改造方法介绍使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
EasyRTSPServer 基于live555改造而来,live555官方代码中只支持IPv4, 现实环境中绝大多数项目也是IPv4, 但是用支持IPv6的EasyRTSPClient去连接海康的相机,并且现工程投标中也有部分明确需要IPv6, 所以在原IPv4基础上,动手改造支持IPv6。
解决问题
定义IPV4和IPV6
live_ipv4_ipv6.h
typedef enum LIVE_IPVER_ENUM
{
LIVE_IP_VER_4 = 0,
LIVE_IP_VER_6
}LIVE_IP_VER_ENUM;
NetAddress.hh
增加地址定义
typedef struct __LIVE_NET_ADDRESS_INADDR
{
struct in_addr sin_addr;
struct in6_addr sin6_addr;
__LIVE_NET_ADDRESS_INADDR()
{
sin_addr.s_addr = INADDR_ANY;
sin6_addr = in6addr_any;
};
}LIVE_NET_ADDRESS_INADDR;
typedef struct __LIVE_NET_ADDRESS_SOCKADDR_IN
{
struct sockaddr_in saddr4;
struct sockaddr_in6 saddr6;
}LIVE_NET_ADDRESS_SOCKADDR_IN;
除了void AddressString::init(struct in_addr addr)外, 将工程中所有struct in_addr 改为 LIVE_NET_ADDRESS
修改重点
在创建IPV6的socket后,需做如下设置(设置IPV6的socket只接收IPV6的数据)
int on = 1;
if (setsockopt(newSocket, IPPROTO_IPV6, IPV6_V6ONLY, (char *)&on, sizeof(on)) < 0)
{
printf("set ipv6 fail.\n");
}
后续的处理和IPV4基本相同。
原文地址:https://www.cnblogs.com/TSINGSEE/p/11678210.html
- 如何安装Windows Phone SDK 7.1 Release Candidate (RC)
- 微信与支付宝回应央行新规:认同央行规范!
- Gulp 工作流中Sass 增量编译功能的探索
- Sass与Compass——回顾
- 苹果就“降速门”致歉;央行批扫码支付不正当竞争;王健林旗下公司遭集体裁员
- 姚期智教授:量子计算是千亿万亿级别的产业,或成为科技创新的引擎
- Powershell中禁止执行脚本解决办法
- 使用AsyncTask异步更新UI界面及原理分析
- 商家为何要做小程序?
- Android中关于dip和px以及转换的总结
- Python介绍
- python案例-用户登录
- 推荐个找代码示例的VS 插件 All-In-One Code Framework Sample Browser
- 明星推出定制AI形象,虚拟形象有何优势
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- Python实现手绘图效果实例分享
- php如何把表单内容提交到数据库
- Laravel5.5 视图 – 创建视图和数据传递示例
- 浅谈Python爬虫原理与数据抓取
- PHP封装cURL工具类与应用示例
- php中isset与empty函数的困惑与用法分析
- 布隆过滤器(bloom filter)及php和redis实现布隆过滤器的方法
- PHP使用反向Ajax技术实现在线客服系统详解
- PHP设计模式之适配器模式(Adapter)原理与用法详解
- laravel5.5框架的上传图片功能实例分析【仅传到服务器端】
- Laravel5.1框架自带权限控制系统 ACL用法分析
- php使用filter_var函数判断邮箱,url,ip格式示例
- Python json格式化打印实现过程解析
- PHP使用DOM对XML解析处理操作示例
- OpenCV Python实现图像指定区域裁剪