客户端主要出错信息:
MultiFramedRTPSource error: Hit limit when reading incoming packet over TCP. Increase \"MAX_PACKET_SIZE\"
RTCPInstance error: Hit limit [1450,1450] when reading incoming packet over TCP. Increase "maxRTCPPacketSize"

live555源码修改记录
服务器端:
针对1080P高清H264码率过大,需要修改live/mediaServer/DynamicRTSPServer.cpp文件中第117行
OutPacketBuffer::maxSize = 1024*1024; // allow for some possibly large H.264 frames
maxSize的值,具体大小可根据实际播放画面质量和服务器打印的出错信息修改

针对服务器发送的RTP包出错,发送时超出系统TCP buffer大小,需修改:live/liveMedia/RTPInterface.cpp  sendDataOverTCP()函数
修改为
makeSocketBlocking(socketNum);
int sendSuccess = loopsend(socketNum,data,dataSize);
makeSocketNonBlocking(socketNum);
if(sendSuccess == dataSize) 
{
return True;
}

else 
{
printf("send false...........\n");
return False;
}
需添加loopsend()函数
int loopsend(int sock, u_int8_t const* buf, unsigned int sndsize)
{
int remian = sndsize;
int sendlen = 0;
int ret = 0;
while(remian > 0)
{
ret=send(sock,buf+sendlen,remian,0);
if(ret <= 0)
{
printf("ret = %d\n",ret);
return ret;
}
sendlen += ret;
remian -= ret;
}
return sndsize;
}

客户端代码健壮性加强
修改live/liveMedia/RTPInterface.cpp 中tcpReadHandler1()函数
在case AWAITING_SIZE2:中
unsigned short size = (fSizeByte1<<8)|c;后添加RTP和RTCP包的大小判断
添加代码如下:
 if(fStreamChannelId == 0x00)
     if(size > 20000) //lcy add    20000为"MAX_PACKET_SIZE"值的大小(RTP包的最大值)
  {
fTCPReadingState = AWAITING_DOLLAR;
  break;
  }
 if(fStreamChannelId == 0x01)      
     if(size > 1450) //lcy add     1450为"maxRTCPPacketSize"值的大小(RTCP包的大小)
{
   fTCPReadingState = AWAITING_DOLLAR;
break;
}

live555的一点bug修改(客户端和服务器)相关推荐

  1. 修改客户端 与服务器断开,如何处理服务器或客户端socket断开

    <如何处理服务器或客户端socket断开>由会员分享,可在线阅读,更多相关<如何处理服务器或客户端socket断开(10页珍藏版)>请在人人文库网上搜索. 1.编程经验谈 如何 ...

  2. 客户端如何修改服务器时间设置在哪里看,客户端同步服务器时间设置在哪里

    客户端同步服务器时间设置在哪里 内容精选 换一换 在创建数据库连接之后,才能使用它来执行SQL语句操作数据.JDBC提供了三个方法,用于创建数据库连接.DriverManager.getConnect ...

  3. 【游戏客户端与服务器面试题】-- 2022年最新游戏客户端与服务器面试(lua篇持续更新)

    [游戏客户端与服务器面试题干货]-- 2022年度最新游戏客户端面试干货(lua篇) 文章目录 一.Lua的8种数据类型 (1) nil 类型 (2) boolean类型 (3) number类型 1 ...

  4. 修改密码后服务器断开连接,SSH无需密码登录服务器且保持连接不断开的方法

    SSH无需密码登录服务器 Mac 无密码 SSH 登录服务器,只需要简单三步,不再需要记住账号密码,快速进入服务器 测试H1 dfsdfsf 测试H2 dfsdfsf 测试H3 dfsdfsf 测试H ...

  5. MySQL的客户端/服务器架构

    以我们平时使用的微信为例,它其实是由两部分组成的,一部分是客户端程序,一部分是服务器程序.客户端可能有很多种形式,比如手机APP,电脑软件或者是网页版微信,每个客户端都有一个唯一的用户名,就是你的微信 ...

  6. c++ Socket实现客户端与服务器数据传输

    c++ Socket实现客户端与服务器数据传输 这是自己第二次写博客,希望在博客记录自己的学习过程,欢迎大家评论! 实现: 客户端往服务器端发送一条数据,服务器端接收数据并输出; 服务器端再发送出接收 ...

  7. VB6 通过winsock控件数组实现客户端和服务器多对一通信

    说明:我是在最近开发一个考试系统过程中搜索到上面文章的,它提供的思想非常实用.当然,这篇文章仅提供了一个基本思路,详细的实现在人民邮电出版社出版的<Visual Basic网络通信协议分析与应用 ...

  8. Windows下svn客户端和服务器的安装使用

    svn,全称subversion, 是目前用的较多的开源的版本管理工具.相信有些经历的程序员应该都听说过它. 通常的svn服务器是搭建在Linux中,不过如果作为个人或者单个小组使用的话,就可以把sv ...

  9. 客户端与服务器cookie

    认识cookie 第一部分: 概要 cookie是一种早期使用的客户端存储机制(现在仍在广泛使用),cookie数据会在Web浏览器和Web服务器之间传输, 因为早期cookie是针对服务器脚本设计的 ...

最新文章

  1. centos7离线安装bazel
  2. Sencha-概念-Events(事件)(官网文档翻译10)
  3. 属于你们的“礼仪小课堂”
  4. ​Java Map中那些巧妙的设计
  5. 版权所有LIKEWING_柳我借地存个图学习一下
  6. Elasticsearch地理位置
  7. OpenCV——Haar特征
  8. 中山大学本科偏微分方程试题
  9. 【Codecs系列】视频编码中的率失真优化RDO技术
  10. 乒乓球侧旋球MATLAB,乒乓球的侧拐球、侧旋球和侧弧圈辨析
  11. 拒酒词,好难找哟,留到有用
  12. 文件夹快速隐藏,文件夹选项中勾选隐藏目录依旧不能使其显示
  13. mysql五日均线_5日均线战法(建议收藏)
  14. (详细介绍)程序员专属接单平台,赚钱的同时提升自己的技术,并附多个快速开发的脚手架项目开箱即用
  15. sql语句 execute、executeQuery和executeUpdate之间的区别
  16. 动态修改域名解析服务器(DDNS)
  17. 微星主板bios怎么进 微星进入bios按哪个键
  18. UEFI 基础教程 (十一) - Shell下读取SMBIOS信息
  19. 滴滴出行2017秋招编程题
  20. pdffactory 打印字体_pdffactory pro|pdf虚拟打印机(pdffactory)下载 v5.31 官方版_小皮网...

热门文章

  1. 如何在Linux中清除交换内存
  2. 浅谈Bootstrap
  3. Gstreamer插件教程1.1—介绍(Introduction):前言(Preface)
  4. C#关键字详解第五节
  5. 类型转换神器Mapstruct新出的Spring插件真好用
  6. 如何将文件夹中数据导入Excel表格
  7. 分享一个python采集中国福利彩票的小代码
  8. 最实用的Modelsim初级使用教程
  9. android iphone 通讯录 同步,为什么我的iPhone上的通讯录无法同步到ic… - Apple 社区...
  10. 如何使用用友接口,进行API接口开发, 你烦恼了没?