QT组播实现多人屏幕共享的程序
2017-05-16 10:34
435 查看
屏幕共享程序的实现: 发送端(共享屏幕服务端) : 1. 获取桌面图像 QScreen *screen = QApplication::primaryScreen(); //获取当前程序的主窗口对象 QPixmap map = screen->grabWindow(QApplication::desktop()->winId()); //调用主窗口对象的捕捉窗口图像,并传递桌面窗口的id号 2. 编码成jpg QByteArray ba; QBuffer bf(&ba); map.save(&bf, "jpg", 30) // 30表示压宿率,值从0 – 100, 值越小表示编码出来的图像文件就越小,当然也就越不清晰 3. 用udp组播发出. 组播的编程参考http://blog.csdn.net/jklinux/article/details/72123951 一张jpg大概100K, 每次传输4K字节, 需分成多次传输. 每次桌面图像编码成jpg, 图像大小是不固定的. 每张图像传输第一次时,发出"newImage:长度", QUdpSocket成功发出个部分数据后, waitForBytesWritten等待发出,完成后再发出下一部分. 接收端: 1. 创建udp对象,加入组播 2. 接收数据到内存数据里,并且判断。 如接收到"newImage:长度"则表示上一张图像已传输完毕,可以把上一张图像刷出来了。并且也知道下一张图像的长度。 3. 接收完成一张图像后。使用QPixmap从内存数组里加载图像. QPixmap map; map.loadFromData((uchar *)data_pic, len_recv); label->setPixmap(map);
完整工程源码:
http://download.csdn.net/detail/jklinux/9843418
相关文章推荐
- QT 实现屏幕共享,遇到udp掉包的问题
- java实现屏幕共享的小程序
- C#实现类似qq的屏幕截图程序
- C#实现类似qq的屏幕截图程序
- 用本地代码实现屏幕方向自适应的Windows Mobile程序
- 关于共享程序集延迟签名的技术实现的具体过程
- QT/QTOPIA屏幕和字体旋转的实现
- 用Visual C++实现屏幕抓图程序
- 进程地址空间的共享(可以实现一个程序只有一个实例运行)
- c 语言实现的简单屏幕烟花程序
- JAVA实现UDP组播聊天程序
- 用Visual C++实现屏幕抓图程序
- C#实现类似QQ的屏幕截图程序 转
- C#实现类似qq的屏幕截图程序 转
- C#实现类似qq的屏幕截图程序收藏
- 用vbs实现配置无人登录计算机时使用的屏幕保护程序
- 用Visual C++实现屏幕抓程序
- C#实现类似qq的屏幕截图程序 [转载]
- 用QT实现程序的国际化
- 基于QT的TCP协议实现的通信小程序(另一种)