- 博客(9)
- 资源 (1)
- 收藏
- 关注
原创 WinSocket发送视频数据发生WSAEWOULDBLOCK
问题背景:程序使用winsocket TCP协议发送视频数据,一帧帧发送,之前测试一直没有问题。直到最近产品计划提升性能,将视频码率提升至4096kbps,本地32路远程16路同时获取,计算一下,网络需要8MB/s的速度。8MB/s = 64Mb/s, 那么一般的百兆网卡和网管肯定是不行了,需要搭建千兆传输网络。我们的网络环境为千兆网,网速实测到50-60MB/s。另外client接收到数据后...
2018-07-24 10:34:34 336
转载 同步与阻塞
同步 同步,就是在发出一个功能调用时,在没有得到结果之前,该调用就不返回。 要想实现同步操作,必须要获得线程的对象锁。获得它可以保证在同一时刻只有一个线能够进入临界区,并且在这个锁被释放之前,其他的线程都不能再进入这个临界区。如果其他线程想要获得这个对象的锁,只能进入等待队列等待。只有当拥有该对象锁的线程退出临界区时,锁才会被释放,等待队列中优先级最高的线程才能获得该锁...
2018-05-10 15:16:59 428
转载 基于 Token 的身份验证
传统身份验证的方法HTTP 是一种没有状态的协议,也就是它并不知道是谁是访问应用。这里我们把用户看成是客户端,客户端使用用户名还有密码通过了身份验证,不过下回这个客户端再发送请求时候,还得再验证一下。解决的方法就是,当用户请求登录的时候,如果没有问题,我们在服务端生成一条记录,这个记录里可以说明一下登录的用户是谁,然后把这条记录的 ID 号发送给客户端,客户端收到以后把这个 ID 号存储在 Coo...
2018-05-08 09:22:25 137
原创 Thrift安装与部署
1. Boost的部署: 1> 解压 2> 编译产生lib目录 2. libevent 1> 解压 2> 该库只需libthriftnb工程引入,只有include没有lib 3. thrift项目部署(C++) 1> 打开thrift.sln(VS2010以上) ...
2018-04-23 09:32:01 1210
原创 Winsock 同步与异步 阻塞与非阻塞
当使用winsocket发送大量视频数据时,遇到过WSAWOULDVLOCK错误,原因就是没有控制发送的速度,导致缓冲区已被填满,数据发到客户端时已经被截断丢失,因此客户端无法正常解析数据。 正确的做法就是在服务器端等待FD_WRITE事件,当产生WSAWOULDVLOCK错误后,等待下一次FD_WRITE被触发,再发送数据。大部分数据量小的程序,基本上不...
2018-04-17 15:46:50 389
原创 使用Windbg-UMDH定位内存上涨
当测试到程序发生了内存上涨问题后,第一步,使用VMMap确定内存上涨时涨在了哪里?第二步,如果是涨在了Heap上,使用Windbg的UMDH来抓取程序的执行片段内存堆栈分配情况 1. 程序启动稳定后第一次抓取内存 2. 程序明显上涨后抓取第二次内存,建议上涨80~100M时抓取。 3. 两次内存做比较,查看明显上涨的调用栈是哪里(第一个调用栈),就可以定位...
2018-04-17 15:24:29 557
原创 VS运行库GUID
打包时,通过检测注册表相应的VS运行库GUID可以判断是否已经安装过了,安装过就不用再装。Visual C++ 2005 Redistributable Package (x86){A49F249F-0C91-497F-86DF-B2585E8E76B7}Visual C++ 2005 Redistributable Package (x64){6E8E85E8-CE4B-4FF5-91F7-04...
2018-04-17 14:41:25 1091 1
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人