当前位置: 首页 > news >正文

网站是否上线wordpress搭建博客视频

网站是否上线,wordpress搭建博客视频,建设网站的条件,为某网站做一则广告语当时用TCP协议传输数据时,经常出现粘包的现象 当服务器向客户端发送数据之后,客户端还没有接收数据的时候,这段时间数据在什么地方? 1、服务器?服务器已经发出数据了 2、网线?数据应该在内存,怎…

当时用TCP协议传输数据时,经常出现粘包的现象
当服务器向客户端发送数据之后,客户端还没有接收数据的时候,这段时间数据在什么地方?
1、服务器?服务器已经发出数据了
2、网线?数据应该在内存,怎么会在网线里面,又没有内存
3、客户端?是的,这个时候数据已经到达客户端了,只不过被保存在客户端的缓存中了(内核缓冲区),客户端只有在read的时候才能读出数据
场景:服务器每次给客户端发出一条数据,但是每次发送数据的量是不一样的,这时要求客户端把服务器发过来的数据依次接收到本地并且进行对应的解析,如果客户端一次发出10个字节,那么客户端也一次读出10个字节,如果多读了,那么就把下一条数据读出来了,此时解析数据会是错误的,这就是TCP粘包

处理办法:发送端在每一个数据包前面加上包头,包头中加入数据长度
接收端接收到后的处理:首先包头的大小是固定的,一般就是一个long或者int类型,所以我们根据这个long或者int类型求出一个固定大小,8字节(long)或者4字节(int),所以在读数据包的时候直接根据这个类型先去读8字节或者4字节,这样就可以读出数据包的长度,然后根据这个长度去读后边的这个数据块
比如此次接收到的长度为100,那么就向后读取100个字节的数据,就是此次的一个包,哪怕此时缓冲区有1000个字节数据,只读这100个字节就能获取一个完整的包,剩余的900个字节就需要下一次去处理,下次处理的时候还是先读包头,读出数据包的一个长度,然后根据这个长度去读取相应的数据,这样一次一次读取就可以一点一点把数据拆分出来了

例:这里以Qt编写的基于opencv的人脸识别的服务器和客户端为例,客户端发送拍下的人脸发送到服务器进行识别,要求传输一帧完整的人脸数据,这就有可能粘包,可能同时发送两个人脸向服务器,此时就需要处理粘包
首先客户端发送图片数据

//把Mat数据转化为QbyteArray, --》编码成jpg格式
std::vector<uchar> buf;
cv::imencode(".jpg",srcImage,buf);   //这就是将拍摄的原始的图像转为jpg然后将数据放到buf中
QByteArray byte((const char*)buf.data(),buf.size()); //数据格式转为QByteArray 
//准备发送
quint64 backsize = byte.size();    //获取数据的长度,这里可以看到backsize是quint64型变量,占8个字节
QByteArray sendData;
QDataStream stream(&sendData,QIODevice::WriteOnly);
stream.setVersion(QDataStream::Qt_5_14);
//将数据放入码流,首先放入数据的长度backsize,quint64为8字节的长度,后面就是数据
stream<<backsize<<byte;  
//发送
msocket.write(sendData);  //将数据包发送

服务器接收图片数据

static quint64 bsize = 0;  //全局变量QDataStream stream(msocket); //把套接字绑定到数据流
stream.setVersion(QDataStream::Qt_5_14);if(bsize == 0){//查看目前TCP的内存缓冲区的数据长度是否能达到bsize所占的字节数,这里应该是8字节if( msocket->bytesAvailable() < (qint64)sizeof(bsize) ) return ;//说明数据长度够8个字节,然后就可以获取采集数据的长度stream>>bsize;
}//获取目前缓存中剩余数据的长度,小于刚才获取的8字节的数据长度说明数据还没有发送完成,返回继续等待
if(msocket->bytesAvailable() < bsize)
{return ;  //此时bsize没有清空,下次还会来这里检查获取的数据长度是否大于或等于bsize
}
QByteArray data;
stream>>data;
bsize = 0;   // 将bsize设为0,说明处理完了一包数据 
if(data.size() == 0)//没有读取到数据
{return;
}//显示图片
QPixmap mmp;
mmp.loadFromData(data,"jpg");
mmp = mmp.scaled(ui->picLb->size());
ui->picLb->setPixmap(mmp);
http://www.yayakq.cn/news/484531/

相关文章:

  • 网站建设 ipc备案视频制作学习
  • 房山网站开发建设工程信息哪个网站有详细信息
  • 做外贸什么网站阿里巴巴招聘官网
  • 云建网站石家庄有没有销售做被用的网站
  • windows 2008 iis添加网站七牛云动静分离wordpress
  • 张家界做网站网站品牌建设公司
  • 域名备案中网站可以开通制作网站一般使用的软件有哪些
  • 网站建站 外贸江门网站推广哪里专业
  • 做婚礼效果图的网站有哪些wordpress 进后台
  • 长垣县住房和城乡建设局网站如何做家教网站
  • 如何申请网站优化工作广州企业官网建设
  • 专业的建网站的公司wordpress点评模板
  • 会员管理网站ASP建设做网站哪里最便宜
  • 杭州高端网站制作基于 seajs 的高性能网站开发和优化实践_王保平(淘宝)
  • 石药网站好一点的app开发公司
  • 风景旅游网站建设的设计思路视频拍摄剪辑培训
  • 学生个人网站模板嘉峪关建设局网站
  • 专业构建网站的公司wordpress 游戏 模板下载
  • 哪个博客可以做单页网站台山住房和城乡建设 网站
  • 搭建网站的五大步骤seo优化seo外包
  • 网站内容编辑器上海网络推广报价
  • 网站备案多长时间来完成简单的做海报的网站
  • 做点心的网站手机网站有什么
  • 游戏发号网站源码快速做网站详情页
  • 苏州做网站公司精选苏州聚尚网络更改wordpress后台登录地址
  • 营销网站建设内容wordpress新建文章页修改图片样式
  • 锦州网站建设公司公司做网站价格
  • 廊坊网站建站贺州招聘网站建设
  • 嘉定建设机械网站论述网站建设流程
  • 网站程序风格淘宝网站建设目的