今天,解决一个现场报回来的故障,关于sock 异常处理导致的问题。

现象是设备收到服务器视频预览的命令后,给服务器传视频数据,发送失败,返回EPIPE(32)错误号;

而且本地又是客户端, 正常的逻辑是本地收到服务器的close流命令后,方可关闭预览流连接。

目前,由于设备端对发送返回值处理没有对errno做细节处理,没有去释放本地资源,导致资源泄露。

增加一些ERRNO 普遍返回值介绍,以后长点记性:

EPIPE:由于 client 在服务器返回前主动断开连接,所以服务器在返回时写 socket 收到SIGPIPE报错

AGAIN、EWOULDBLOCK、EINTR与非阻塞 长连接

EWOULDBLOCK用于非阻塞模式,不需要重新读或者写

EINTR指操作被中断唤醒,需要重新读/写

在Linux环境下开发经常会碰到很多错误(设置errno),其中EAGAIN是其中比较常见的一个错误(比如用在非阻塞操作中)。
从字面上来看,是提示再试一次。这个错误经常出现在当应用程序进行一些非阻塞(non-blocking)操作(对文件或socket)的时候。例如,以 O_NONBLOCK的标志打开文件/socket/FIFO,如果你连续做read操作而没有数据可读。此时程序不会阻塞起来等待数据准备就绪返 回,read函数会返回一个错误EAGAIN,提示你的应用程序现在没有数据可读请稍后再试。
又例如,当一个系统调用(比如fork)因为没有足够的资源(比如虚拟内存)而执行失败,返回EAGAIN提示其再调用一次(也许下次就能成功)。
Linux - 非阻塞socket编程处理EAGAIN错误
在linux进行非阻塞的socket接收数据时经常出现Resource temporarily unavailable,errno代码为11(EAGAIN),这是什么意思?
这表明你在非阻塞模式下调用了阻塞操作,在该操作没有完成就返回这个错误,这个错误不会破坏socket的同步,不用管它,下次循环接着recv就可以。 对非阻塞socket而言,EAGAIN不是一种错误。在VxWorks和Windows上,EAGAIN的名字叫做EWOULDBLOCK。
另外,如果出现EINTR即errno为4,错误描述Interrupted system call,操作也应该继续。

最后,如果recv的返回值为0,那表明连接已经断开,我们的接收操作也应该结束。

服务器远程预览本地设备视频, 预览多个,打不开视频流相关推荐

  1. Zan Proxy:解决前端跨域、服务端预览本地文件、

    Zan Proxy 官网链接 https://youzan.github.io/zan-proxy/ Mac 需要 安装证书 https://youzan.github.io/zan-proxy/bo ...

  2. Qt Creator在设备上预览

    Qt Creator在设备上预览 在设备上预览 在Boot2Qt设备上预览 在设备上预览 要在Boot2Qt设备上预览UI ,您需要使用USB电缆或有线或无线连接将设备连接到系统,具体取决于设备,并配 ...

  3. 远程VPS和本地电脑之间无法粘贴复制及分享文件

    问题原因:大概率是因为rdpclip.exe 进程未正常运行,或桌面远程未给予足够的权限. 操作步骤: 1.在本地电脑工具栏右键打开任务管理器,查看有无rdpclip.exe进程,通常,只要存在该进程 ...

  4. 海康威视设备网络SDK_Win64 V6.1.9.4_build20220412 java本地demo实现预览视频下载、摄像头转向控制等

    1 下载sdk 下载地址:https://open.hikvision.com/download/5cda567cf47ae80dd41a54b3?type=10 1.1 下载内容示例 1.2 dem ...

  5. 电脑摄像头未能创建连接服务器,win8打开摄像头提示“未能创建视频预览,请坚持设备连接”怎么办...

    win8系统电脑可以通过摄像头进行视频.或语音聊天,非常方便而且实用.但是使用摄像头过程中也会遇到一些奇怪的问题,最近有win8系统用户打开摄像头的时候出现预览视频失败,提示"未能创建视频预 ...

  6. 使用Wpf+SDK预览本地摄像头设备

    一.前言 海康威视桌面板开发,追求简单快捷高效可选择Winform进行开发,追求界面好看当然自然需要选择WPF进行开发,WPF在布局也界面效果展示上面可以做的很漂亮. WPF 和 Winform 开发 ...

  7. javascript显示本地服务器图片,JavaScript图片本地预览功能的实现方法

    这篇文章主要介绍了JavaScript实现图片本地预览功能,针对非IE浏览器的HTML5滤镜功能及IE浏览器的相关组件功能实现不上传至服务器预览本地图片的效果,需要的朋友可以参考下 本文实例讲述了Ja ...

  8. 【技术贴】最新唯一解决:未能创建视频预览,请检查设备连接,确定没有其他应用程序或用户使用该设备...

    [技术贴]最新唯一解决:摄像头未能创建视频预览,请检查设备连接,确定没有其他应用程序或用户使用该设备. 搞了两个月都没有解决,今天给解决了!!!!哇哈哈哈哈 1.百度一下[终极解码2011],下载进行 ...

  9. 电脑摄像头未能创建连接服务器,Win7中摄像头提示未能创建视频预览错误怎么办...

    最近有不少用户在我们网站上提问说他们在打开摄像头的时候,就会遇到打开摄像头的时候提示"未能创建视频预览,请检查设备连接"的问题,这是怎么回事呢,出现这样的原因的话有可能是电脑中毒了 ...

  10. 电脑摄像头未能创建连接服务器,Win7摄像头提示"未能创建视频预览"的原因及解决方法...

    在Win7系统中打开摄像头,出现提示"未能创建视频预览,请检查请检查设备连接",出现这种情况,第一反应会认为摄像头坏了或者是电脑出问题了,如果不能确定,我们可以逐一进行排查,找出真 ...

最新文章

  1. 【原创】Cookie应用(二)
  2. 记一次数据中心云平台系统项目实施
  3. j2me学习三_LCDui类学习(2)
  4. 负载测试与压力测试的区别
  5. c语言入门教程文库,C语言入门教程(全集)课件
  6. 为特使建立控制平面的指南第2部分-识别组件
  7. Elasticsearch分布式机制探究
  8. 重启服务器后网页显示nginx,解决重启服务器以后Nginx无法启动
  9. ad采样信噪比与噪声_在AD转换中的过采样和噪声形成
  10. [九度][何海涛] 数组中只出现一次的数字
  11. mysql5.6 prompt的用法详解
  12. Eclipse反编译插件(免费无需下载资源)
  13. 在大米云主机中采用CentOS 6.5 部署Redmine 3.3
  14. a5解锁 oppo_oppoa5忘记密码了怎么强制解锁
  15. Java实现 蓝桥杯 算法提高 学霸的迷宫
  16. markdown如何设置图片大小_cnblogs文章/MarkDown内如何调整图片的宽度?
  17. Windows10下使用Conda安装TensorFlow-GPU
  18. 自适应与响应式的区别?
  19. [Shiro教程] Shiro 教程基于SSM(SpringMVC + Spring + Mybatis)EHCache版本
  20. ATFX:欧央行利率决议来袭,重点关注拉加德新闻发布会

热门文章

  1. 电磁兼容的PCB设计(一)
  2. xp系统 护眼模式
  3. 统计学习导论(ISLR)第五章bootstrap和交叉验证课后习题
  4. python算法详解豆瓣_豆瓣评分9.0以上的编程书,了解一下?
  5. 编程开源_5种最适合编程的开源字体
  6. linux运行海康,海康网络摄像机SDK Linux对接
  7. C语言和三菱plc通讯,三菱PLC的通讯与编程,附实际案例
  8. Ubuntu打开swf文件
  9. LinuxCNC的能做什么
  10. 系统制作与优化2007最终版