×

智能手机无线网络会议白板软件系统解析

消耗积分:1 | 格式:rar | 大小:0.5 MB | 2017-10-27

分享资料个

随着移动通信技术的快速发展,智能手机正在成为另一种形式的计算机终端,吸引越来越多的用户的关注和使用。人们使用手机,不再只是局限于通话功能,而是追求无线商用和娱乐等高端需求。智能手机由于类似于个人PC的“操作系统+应用软件”的架构,将成为手机市场的主流产品,甚至正在逐渐挤占个人PC和笔记本电脑的市场份额。
  智能手机目前以众多娱乐功能吸引用户,而其无线商用功能还处于萌牙阶段,这是因为智能手机技术,包括硬件处理器、内存、操作系统、应用软件等目前仍处于高速发展阶段,其无线商用功能还有待业界描述和定义并相应地开发出应用软件。同时,无线商用可能要求移动基础网络保持较高的数据传输速率,这在升级为3 G的各大城市不成问题,因为移动3G网络的通信速率在高速移动情况下可以达到384 kb/s,在慢速移动和静止的情况下更高,已经能够满足智能手机的无线商用要求。何况移动通信的基础网络还在向4 G发展和演进。
  无线网络会议电子白板系统是利用J2ME开发平台为智能手机描述和定义的一种无线商用,目的是为那些处于移动状态而无法通过有线方式和笔记本电脑进行在线交流的移动用户而开发的一种服务。智能手机的无线网络白板应用类似于有线电视的电话会议,不同之处是利用智能手机和移动通信网络。无线网络白板应用与移动用户的点对点通信有很大的不同。无线网络白板继承了PC机下电子白板的所有功能,例如参与会议的多个手机用户可以通过手机对同一幅图像进行处理和实时显示,这种协同操作方式较之点对点通信方式大大提高了效率。
  1 开发环境
  目前智能手机使用的主流操作系统有:诺基亚公司的Sybian操作系统、微软公司的Windows Mobile移动操作系统、谷歌公司的Android操作系统。由于前两者是具有公司专属专利权的操作系统,所以应用和发展比较缓慢,而Android则是Google于2007年11月5日推出的基于Linux平台的开源手机操作系统。由于Android系统的源代码开放性以及众多的应用接口,所以一经推出仅用三年多的时间就超过了推出十多年的Sybian操作系统。Android开发平台由操作系统、中间件、用户界面和应用软件组成,号称是首个为移动终端打造的真正开放和完整的移动软件。Android以Java为编程语言,其中开发智能手机应用程序采用Java中的J2ME最为合适。J2ME由SUN公司推出,主要针对数字机顶盒、移动电话和PDA之类嵌入式消费电子设备的开发。J2ME把智能手机等类似的运算能力和电力供应有限地装置归入到称为“CLDC”的嵌入式开发设备类型之中,在CLDC中有一个专门针对移动信息设备开发的简表MIDP,像智能手机或PDA等内存和处理器资源有限的嵌入式设备开发都利用J2ME的MIDP进行。本文正是在Android操作系统下,利用J2ME开发工具的MIDP进行开发的。
  2 服务器端程序开发
  参加电子会议的所有客户端都可以通过自由竞争或选举成为服务器,但每时每刻只能有一个客户端竞争成为服务器。服务器相当于电子会议的主持人。通常参加电子会议的一组客户端会按参加会议的人员身份确定一个服务器,服务器是按参加会议人员的实际情况确定,并不需要自由竞争。如果成为服务器的手机客户临时有事退出电子会议,则可以由实际参加会议的人员身份情况告知另一个客户端成为服务器,如果没有告知则可以通过竞争成为服务器。
  服务器的主要功能包括建立一个电子白板会议,服务器能够发起与客户端的连接,也能够响应客户端的连接请求,发送、接收和转发客户端的数据,服务器还对电子白板会议进行维护,使得电子会议能够顺利推进。
  2.1服务器的线程结构表
  服务器端程序较多并且复杂。服务器端主要通过维护有多个线程的结构表来实现相关的功能。线程的结构表程序如下:
  struct ThreadStruct{
  int threadID;
  int userID;
  boolean connected;
  string mobileIP;
  int mobilePort
  }
  上述的线程结构表可以同时建立和维护多个线程,不同的线程使用threadID来标识,ID值可以自由定义,理论上可以在0~1 204之间。每个线程ID对应一个移动用户。同时结构表中包含使用此线程的移动手机IP和端口号。服务器开启后,默认情况下所有线程连接为未连接状态值“false”。只有当服务器接收到某个客户端的连接请求后,选择其中一个空的线程和客户端连接,这时该线程的连接状态由“false”改变为“true”。一般情况下,发起连接的客户端一旦与服务器建立连接后,会成为永久连接。也可以设置为经过若干时间没有数据响应则断开此连接。当该线程客户端断开后,该线程数据结构的连接状态重新设置为未连接“false”。下面的全局静态变量定义的是线程结构表中的线程组值大小和端口号。
  final static int MAX_COUNT = 80;
  final static int USER_PORT = 4 545;

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

评论(0)
发评论

下载排行榜

全部0条评论

快来发表一下你的评论吧 !

'+ '

'+ '

'+ ''+ '
'+ ''+ ''+ '
'+ ''+ '' ); $.get('/article/vipdownload/aid/'+webid,function(data){ if(data.code ==5){ $(pop_this).attr('href',"/login/index.html"); return false } if(data.code == 2){ //跳转到VIP升级页面 window.location.href="//m.obk20.com/vip/index?aid=" + webid return false } //是会员 if (data.code > 0) { $('body').append(htmlSetNormalDownload); var getWidth=$("#poplayer").width(); $("#poplayer").css("margin-left","-"+getWidth/2+"px"); $('#tips').html(data.msg) $('.download_confirm').click(function(){ $('#dialog').remove(); }) } else { var down_url = $('#vipdownload').attr('data-url'); isBindAnalysisForm(pop_this, down_url, 1) } }); }); //是否开通VIP $.get('/article/vipdownload/aid/'+webid,function(data){ if(data.code == 2 || data.code ==5){ //跳转到VIP升级页面 $('#vipdownload>span').text("开通VIP 免费下载") return false }else{ // 待续费 if(data.code == 3) { vipExpiredInfo.ifVipExpired = true vipExpiredInfo.vipExpiredDate = data.data.endoftime } $('#vipdownload .icon-vip-tips').remove() $('#vipdownload>span').text("VIP免积分下载") } }); }).on("click",".download_cancel",function(){ $('#dialog').remove(); }) var setWeixinShare={};//定义默认的微信分享信息,页面如果要自定义分享,直接更改此变量即可 if(window.navigator.userAgent.toLowerCase().match(/MicroMessenger/i) == 'micromessenger'){ var d={ title:'智能手机无线网络会议白板软件系统解析',//标题 desc:$('[name=description]').attr("content"), //描述 imgUrl:'https://'+location.host+'/static/images/ele-logo.png',// 分享图标,默认是logo link:'',//链接 type:'',// 分享类型,music、video或link,不填默认为link dataUrl:'',//如果type是music或video,则要提供数据链接,默认为空 success:'', // 用户确认分享后执行的回调函数 cancel:''// 用户取消分享后执行的回调函数 } setWeixinShare=$.extend(d,setWeixinShare); $.ajax({ url:"//www.obk20.com/app/wechat/index.php?s=Home/ShareConfig/index", data:"share_url="+encodeURIComponent(location.href)+"&format=jsonp&domain=m", type:'get', dataType:'jsonp', success:function(res){ if(res.status!="successed"){ return false; } $.getScript('https://res.wx.qq.com/open/js/jweixin-1.0.0.js',function(result,status){ if(status!="success"){ return false; } var getWxCfg=res.data; wx.config({ //debug: true, // 开启调试模式,调用的所有api的返回值会在客户端alert出来,若要查看传入的参数,可以在pc端打开,参数信息会通过log打出,仅在pc端时才会打印。 appId:getWxCfg.appId, // 必填,公众号的唯一标识 timestamp:getWxCfg.timestamp, // 必填,生成签名的时间戳 nonceStr:getWxCfg.nonceStr, // 必填,生成签名的随机串 signature:getWxCfg.signature,// 必填,签名,见附录1 jsApiList:['onMenuShareTimeline','onMenuShareAppMessage','onMenuShareQQ','onMenuShareWeibo','onMenuShareQZone'] // 必填,需要使用的JS接口列表,所有JS接口列表见附录2 }); wx.ready(function(){ //获取“分享到朋友圈”按钮点击状态及自定义分享内容接口 wx.onMenuShareTimeline({ title: setWeixinShare.title, // 分享标题 link: setWeixinShare.link, // 分享链接 imgUrl: setWeixinShare.imgUrl, // 分享图标 success: function () { setWeixinShare.success; // 用户确认分享后执行的回调函数 }, cancel: function () { setWeixinShare.cancel; // 用户取消分享后执行的回调函数 } }); //获取“分享给朋友”按钮点击状态及自定义分享内容接口 wx.onMenuShareAppMessage({ title: setWeixinShare.title, // 分享标题 desc: setWeixinShare.desc, // 分享描述 link: setWeixinShare.link, // 分享链接 imgUrl: setWeixinShare.imgUrl, // 分享图标 type: setWeixinShare.type, // 分享类型,music、video或link,不填默认为link dataUrl: setWeixinShare.dataUrl, // 如果type是music或video,则要提供数据链接,默认为空 success: function () { setWeixinShare.success; // 用户确认分享后执行的回调函数 }, cancel: function () { setWeixinShare.cancel; // 用户取消分享后执行的回调函数 } }); //获取“分享到QQ”按钮点击状态及自定义分享内容接口 wx.onMenuShareQQ({ title: setWeixinShare.title, // 分享标题 desc: setWeixinShare.desc, // 分享描述 link: setWeixinShare.link, // 分享链接 imgUrl: setWeixinShare.imgUrl, // 分享图标 success: function () { setWeixinShare.success; // 用户确认分享后执行的回调函数 }, cancel: function () { setWeixinShare.cancel; // 用户取消分享后执行的回调函数 } }); //获取“分享到腾讯微博”按钮点击状态及自定义分享内容接口 wx.onMenuShareWeibo({ title: setWeixinShare.title, // 分享标题 desc: setWeixinShare.desc, // 分享描述 link: setWeixinShare.link, // 分享链接 imgUrl: setWeixinShare.imgUrl, // 分享图标 success: function () { setWeixinShare.success; // 用户确认分享后执行的回调函数 }, cancel: function () { setWeixinShare.cancel; // 用户取消分享后执行的回调函数 } }); //获取“分享到QQ空间”按钮点击状态及自定义分享内容接口 wx.onMenuShareQZone({ title: setWeixinShare.title, // 分享标题 desc: setWeixinShare.desc, // 分享描述 link: setWeixinShare.link, // 分享链接 imgUrl: setWeixinShare.imgUrl, // 分享图标 success: function () { setWeixinShare.success; // 用户确认分享后执行的回调函数 }, cancel: function () { setWeixinShare.cancel; // 用户取消分享后执行的回调函数 } }); }); }); } }); } function openX_ad(posterid, htmlid, width, height) { if ($(htmlid).length > 0) { var randomnumber = Math.random(); var now_url = encodeURIComponent(window.location.href); var ga = document.createElement('iframe'); ga.src = 'https://www1.elecfans.com/www/delivery/myafr.php?target=_blank&cb=' + randomnumber + '&zoneid=' + posterid+'&prefer='+now_url; ga.width = width; ga.height = height; ga.frameBorder = 0; ga.scrolling = 'no'; var s = $(htmlid).append(ga); } } openX_ad(828, '#berry-300', 300, 250);