大家好,今天我们介绍下在Ubuntu环境中用Qt-Creator设计网络电子白板,所谓的电子白板就是指在网络上通过客户端与服务器进行图元的绘画,然后由服务端广播出去发送到多个客户端上,从而实现图元绘画的同步性。这种电子白板也经常用于教育直播系统中,这里我们只简单介绍下客户端与服务端,供大家学习进步。

对于客户端的实现分为连接处理,登陆界面,绘画界面,响应事件的处理,连接我们用了TCP协议,界面我们使用了Qt的图形视图框架,不太了解的同学可以先学习下,对于服务端基本就是连接客户端,接受客户端的消息处理后再返回给客户端,对于接受发送消息,我们都用的是json保存,下面我们来看下已做好的小程序。

本人也处于刚入手阶段,在登陆界面目前有用户姓名以及join按钮框,用户姓名可以修改,加入之后可以在服务端看到加入者的一些消息,在加入之前确保已运行服务端,并同时确定需要加入客户端的个数,让多个客户端处于以下状态之一即可。

下图中黑色框是已运行的服务端,在黑色框下面是两个客户端,若有需要你可以运行多个客户端。左一客户端是姓名为liang暂未登陆的用户,右一的客户端是姓名为Mary并已成功登陆的用户,成功登陆的用户会跳转到绘图界面并同时在服务器中打印出它登陆的消息(注意:在成功登陆后不可进行图元的绘制,必须等所有用户均加入后方可绘制图元,否则其余用户会加入失败,若不小心进行了误操作,那不好意思,麻烦你先重启服务端后再加入客户端进行操作)。

下面我们介绍绘图界面,对于绘图界面从左到右的图元依次为 直线、矩形、椭圆、三角形、随意绘画、删除上个图元、清除所有图元,默认开始选择的图元是绘画直线。如下图现在两个客户端均已登陆成功进入绘图界面,服务器显示两个客户端消息,消息显示的是加入者的姓名,加入者的id,主机地址,port,右一为Mary,左一为liang。

现在我们进行图元的绘制,如下图,首先我们在右一用户为Mary(id为1)的界面下绘制直线,此时可以看到服务端的消息打印,creator 为1,type 为”add“,图元type为“line”,通过json接受Mary的消息进行处理后广播到其他的客户端,此时我们能明显看到liang的客户端也打印出一样的直线。

如下图现在我们在liang(id为2)的客户端中绘制椭圆,选中椭圆的图元后绘制,此时能看到服务端的消息,ceator为2,type为"add" ,图元"type"为"oval",同样的在Mary(id为1)的客户端中显示了椭圆图元。

后面添加矩形,三角形,随意绘画步骤基本一致,现在看下删除上一个图元的过程,首先我们把五个类型图元都添加进绘图框中,服务端打印出的消息有点多,因为对于随意绘画的这个图元,我们需要记录鼠标按下抬起时所有点的坐标。

这里我们加入图元的顺序是直线、椭圆、矩形、三角形、随意绘画,当我们删除上个图元时首先删除的自然是随意绘画的一部分,接着我们继续点击删除按钮,就继续按顺序往上删除,直至所有图元被删除,回到起始状态,这里演示下删除随意绘画出的“亮”这个子的最后一笔,其他图元删除大家可下载后自己玩一玩额,嘻嘻,对了,每个客户端的删除按钮都可以删除上个图元,这里我虽然是在liang(id为2)的客户端绘制的最后的一个图元,但删除我是在Mary(id为1)的客户端进行的。服务端的消息是type为“delete” ,global_id为12,这里的global_id指的是删除第几个图元,“亮”这个字我在随意绘制时绘制了八笔(有点尴尬,亮实际是九笔额,不好意思啊!)即八个图元,加上之前的四个图元,刚好十二个图元,而我们删除的刚好是最后一个,后面若是继续点击删除就是第十一个、第十个…

现在我们看下最后一个按钮,即清除所有图元,这个没有什么好说的,就是初始化到最初为NULL的状态(注意:若要退出整个程序需要清理所有的图元,否则会造成部分内存问题(程序错误),若你想再此运行客户端连接服务端就会出现连接异常,那这时候就不好意思了,你得重启服务端后再来连接客户端了)。在你退出整个程序前,我这里会有一个提示。如下图所示,若你未清理所有图元,麻烦你点击返回清理所有图元后再退出,之后你就可以重新开启更多或更少客户端来继续运行程序而不必重启服务器。

教育直播系统中不可或缺的功能部件:电子白板相关推荐

  1. 除了“熊孩子捣乱”,教育直播系统还有什么原因会导致延迟卡顿

    作为直播+教育的产物,教育直播系统是现在比较流行的直播系统之一,钉钉拿下了教育部的圣旨,成为中小学生在线教学的钦点教育直播软件,233网校等老牌教育系统也都不甘示弱,纷纷表示支持中小学生在家上课,停课 ...

  2. 在线教育直播系统 一对一在线直播平台解决方案

    在线教育直播系统 一对一在线直播平台解决方案 在线教育直播系统功能模块 在线教育直播系统讲师端功能 在线教育直播系统学生端功能 一对一在线教育系统功能介绍 一对一在线教育系统优势 在线教育直播系统功能 ...

  3. 教育直播系统如何开发?

    由于疫情的影响,推动了线上教育的发展脚步,而各大直播服务商纷纷将目光瞄准了教育直播这块蛋糕,当然也有不少人想要投资进入这块领域,那么你就需要了解教育直播系统开发的基础知识.下面我们来看看吧. 1.开发 ...

  4. 教育直播系统源码搭建的关键点、代码解析

    目前,直播已经应用到了各种传统行业,其中直播带货和教育直播在近两年"风生水起",特别是在线教育,很多传统的教培机构已经开始转型线上.那么,教育直播系统源码开发时有哪些关键点呢?下文 ...

  5. 直播系统中使用SEI传输用户自定义数据方案讨论

    在直播系统中,除了直播音视频之外,有时候还想从主播端发布文本信息等,这些信息可以不通过视频传输通道发送给用户播放端,但如果传输的数据想和视频保持精准同步,那最好的办法就是这些信息和视频数据打包在一起传 ...

  6. 手机直播/PC直播/摄像头直播等流媒体直播系统中如何进行推流优化?

    流媒体直播系统的推流是视频播放中很重要的一个步骤,推流跟播放其实是逆向的,具体流程就不多说了. 我们视频直播点播流媒体服务器可以进行视频推流播放,那么在视频直播系统中,推流优化是如何实现的?本篇我们就 ...

  7. 实现1V1音视频实时互动直播系统 十二、第三节 直播系统中的信令及其逻辑关系

    今天我们开始讲真正的音视频传输了,也就说将我们之前讲解的信令服务器与我们后面讲解的端到端传输过程,那么整个将他们连接到一起,这样就形成了一个真正的直播系统.看似很简单的东西,其实我们要改造的内容还是有 ...

  8. 直播带货系统,带货直播系统中发布商品的逻辑处理流程

    直播带货系统的风潮最近突然就刮了起来,这大概要归功于淘宝直播带货达人"李佳琦".作为优质的直播系统开发商,为了能给众多用户带来实用性强且变现方式多元化的直播产品体验,推出了带货直播 ...

  9. 教育直播系统开发的基础功能

    目前,网络直播系统应用领域非常广泛,例如教育行业.电子商务.企业员工培训.直播游戏等都能寻找到视频直播系统的踪迹.特别是在新冠疫情的影响下,线上教学方式受到了各种高等院校及其培训学校的欢迎,缩短了老师 ...

最新文章

  1. Eclipse不自动编译 设置后重新编译仍然没有编译
  2. javascript漏洞-检测到目标站点存在javascript框架库漏洞
  3. 一个完整的python项目源码-一个Python开源项目-腾讯哈勃沙箱源码剖析(上)
  4. 设置nginx开机启动
  5. vijos p1460——拉力赛
  6. 我对STL的一些看法(三)认识list容器
  7. bootstrap 栅栏布局中 col-xs-*、col-sm-*、col-md-*、col-lg-* 区别及使用方法
  8. c语言 %15s,c语言求助
  9. 深度学习-超参数和交叉验证
  10. 解决用word修改博客后字体变大的问题
  11. SpringBoot配置mybatis多数据源(包含单数据源)最终解决方案,带源码
  12. android db加载后无法读取任何内容_android性能优化(二)之卡顿优化
  13. 威海二职工业机器人专业_工业机器人专业主要学什么?
  14. mysql 5.5 字符集_mysql 5.5字符集问题
  15. 机器学习算法——聚类3(k均值算法)
  16. ffmpeg使用指令转码b站上下载的视频
  17. Keras-Unet-语义分割
  18. 概率论与数理统计学习笔记——第7讲——连续型随机变量(2.5.4指数分布及其与泊松分布的关系)
  19. 软工网络15团队作业4——Alpha阶段敏捷冲刺之Scrum 冲刺博客(Day3)
  20. 学车考试技巧(图解)

热门文章

  1. JSE6-数组枚举,集合,泛型
  2. 给ggplot2来个「手绘风」
  3. 基于Python的在线办公系统的设计和实现
  4. java毕设项目居家养老系统(附源码)
  5. 微信小程序for循环遍历数组解决办法
  6. 2021年高压电工考试资料及高压电工考试试卷
  7. ubuntu下的按键精灵xdotool
  8. Han‘s Cute(cyton-300)机器人基本操作教程及多机器人启动方式
  9. 交谈礼仪的基本要求(1)
  10. linux解压命令中 zxvf中四种参数代表的是什么含义