精华内容
下载资源
问答
  • C#使用HttpWebRequest自动更新客户端应用程序
  • Web实时更新客户端数据

    千次阅读 2014-09-02 15:20:16
    1 轮询方式实现客户端数据及时更新   在基于Web的即时通信、股票行情这样的系统中,需要客户端能够及时更新内容。由于B/S架构的特性(Http连接是无状态连接, 即服务器处理完客户的请求,并收到客户的应答后即断开...

    @Jan 9, 2014 

    1        轮询方式实现客户端数据及时更新

     

    在基于Web的即时通信、股票行情这样的系统中,需要客户端能够及时更新内容。由于B/S架构的特性(Http连接是无状态连接, 即服务器处理完客户的请求,并收到客户的应答后即断开连接),最简单的方式是通过客户端轮询的方式实现客户端刷新。

    较早是将一个隐藏的iframe嵌在网页中,通过该iframe不断刷新来获取最新内容,现在通过Ajax来实现,通过每隔一段时间发起Http请求实现数据更新,并可以实现异步更新。轮询方式显而易见的缺点就是会造成服务器较大负载。

     

    Note:传统的JavaApplet和ActiveX通过Socket通信可以实现数据的及时更新。

    2        Comet 服务器推送数据到客户端

    现在还有一种技术是Comet,Comet其实就是许多年前流行的CGI聊天室所用的Server Push技术。这个方法一开始是由Client对Server建立连接,但是Server在建立连接后,送出的header中要把content-type设为“multipart/x-mixed-replace”,就是server之后要分或多次返回多片段数据,让Client保持连接,并且把每次拿到的数据取代之前的数据片段。接着client就只要在保持不断的连接上等着server发送的数据就好了。Comet利用这种特性,加上Ajax能异步更新数据,变成开发rich client非常重要的技术。

    但Comet不像Ajax那样容易用到现成的http server上,它需要server上有适当的程式配合。[2]参考文献[1] 提供了使用Comet的代码片段。

    3        HTML 5的数据更新

    HTML5本身提供了对即时数据更新的支持。

    HTML5中的Server-Sent 事件用来实现网页自动获取来自服务器的更新,Server-Sent是单方面的消息传递。通过服务器发送事件,更新能够自动到达,从而实现微博更新、赛事结果这样的应用。

     

    HTML5的Web Socket 使浏览器和服务器之间可以建立一个基于 TCP 连接的双向通道。Web 开发人员可以非常方便地使用 WebSocket 构建实时 web 应用。

     

    4        参考

    [1] Comet 服务器“推”技术,实现web服务器“主动”向客户端发送数据。

    http://www.360doc.com/content/11/0617/16/597197_127627804.shtml

     

    [2] Comet(Server Push) on Turbogears(2)

    blog.vgod.tw/tag/server-push

     

    [3] HTML5服务器发送事件.

    http://www.w3school.com.cn/html5/html_5_serversentevents.asp

     

    [4] 使用 HTML5 WebSocket 构建实时 Web 应用.

    http://www.ibm.com/developerworks/cn/web/1112_huangxa_websocket/

    展开全文
  • 客户端更新示例代码

    2016-11-14 16:50:13
    客户端更新主要是apk和ipa的替换更新,主要是用于底包更改、功能有比较大的情况。 //打包的时候,安卓去修改/compileTool-Android/tools/config/clientConfig.xml的clientversion //因为Mobile调试...

    客户端更新主要是apk和ipa的替换更新,主要是用于底包更改、功能有比较大的情况。

    <html>
    <head>
      <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
    </head>
    <body>
       <nav title="首页"></nav>
    </body>
    <script>
    
        //打包的时候,安卓去修改/compileTool-Android/tools/config/clientConfig.xml的clientversion
        //因为Mobile调试客户端的版本号是7.1,测试"客户端更新功能"有两个方案:
        //(1)打个7.2或者更高版本的客户端上传到服务端,使用调试客户端进行测试
        //(2)打两个包,一个1.0的包安装到本机,一个1.1或者更高版本的包上传到服务端,进行测试
        var initor = new $M.Init();
        initor.hasUpdatableClient(function(state, result) {
          log("客户端检查更新:" + state + "+" + Utils.jsonToString(result));
          if (state == true) {
            log("welcome", "有客户端更新");
            var json = Utils.stringToJson(result);
            //拿到客户端的url,使用系统浏览器去打开链接
            Utils.browser(json[0].url);
          } else {
            log("welcome", "无客户端更新");
          }
        }, function(errcode, errmsg) {
          log("客户端检查更新err:" + errcode + errmsg);
        });
    
       
    </script>
    </html>
      
    


    展开全文
  • WinForm客户端自动更新

    2015-06-25 11:38:25
    更新精确到单个文件(包含dll),也就是说当服务器上增加了一个文件,那客户端就拷贝该文件,如果服务器上某文件有所修改,那么客户端更新该文件。配置文件里的服务器登录用户名和登录密码设置时是明密字符串,当...
  • 客户端python热更新

    千次阅读 2016-03-05 17:06:59
    随着游戏项目引入了脚本语言以后,热更新技术逐渐成为了标配,在我经历过的游戏项目中,无论是服务端还是客户端,版本的更新迭代都是围绕着静态patch和动态patch(热更新)来进行的。下面来谈一下客户端python热更新的...

    介绍:

    热更新,就是在维持服务不间断的情况下,对软件代码逻辑或配置数据进行更新修复。随着游戏项目引入了脚本语言以后,热更新技术逐渐成为了标配,在我经历过的游戏项目中,无论是服务端还是客户端,版本的更新迭代都是围绕着静态patch和动态patch(热更新)来进行的。下面来谈一下客户端python热更新的处理。


    原理:

        1. 标准import

    我们知道,import可以导入一个标准的python模块,将模块载入内存,并加到sys.modules中。多次import同一模块只是将名称导入到当前的Local名字空间,也就是一个模块不会重复载入。

        2. reload函数

    reload()函数可以重新载入已经导入的模块,这样看起来就可以热更新python模块了。可惜的是,python原生的reload函数远不能满足游戏热更新的问题,原因如下:

    • reload重新加载的模块不会删除旧版本的模块,也就是已经引用的旧模块无法更新
    • 同样因为不能旧对象的引用,使用from ... import ... 方式引用的模块同样不能更新
    • reloas(m)后,class及其派生class的实例对象,仍然使用旧的class定义。
    • 加载模块失败时候,没有rollback机制,需要重新import该模块

    因此,有必要结合游戏的情景,自定义适合的reload。新的自定义reload目的是为了达到在原程序不结束的情况下,让程序能动态加载改动后的代码。主要想达到下面两点:

    • 提升开发期的开发效率
    • 在游戏不重启的情况下修复紧急BUG


    实现:

    热更新当中实际的重点在于如何让已经创建的对象获得新代码的变化,以及在reload前后不产生类型上的不一致。刷新function,class内定义的method比较容易实现,但对于刷新module内定义的变量,class内定义的变量,还有新增加的成员变量,则需要有统一的约定。所以,在热更新过程中,我们只要考虑好代码更新和数据更新这两点,那么更新就是可行的。

    下面罗列一下新的reload具备哪些特性:

    ①更新代码定义(function/method/static_method/class_method)

    ②不更新数据(除了代码定义外的类型都当作是数据)

    ③在module中约定reload_module接口,class中约定reload_class接口,在这两个接口中手动处理数据的更新,还有更多的约定和接口待完成


    替换函数对象的内容

    # 用新的函数对象内容更新旧的函数对象中的内容,保持函数对象本身地址不变
    def update_function(oldobj, newobj, depth=0):
        setattr(oldobj, "func_code", newobj.func_code)
        setattr(oldobj, "func_defaults", newobj.func_defaults)
        setattr(oldobj, "func_doc", newobj.func_doc)

    替换类的内容

    # 用新类内容更新旧类内容,保持旧类本身地址不变
    def _update_new_style_class(oldobj, newobj, depth):
        handlers = get_valid_handlers()
        for k, v in newobj.__dict__.iteritems():
            # 如果新的key不在旧的class中,添加之
            if k not in oldobj.__dict__:
                setattr(oldobj, k, v)
                _log("[A] %s : %s"%(k, _S(v)), depth)
                continue
            oldv = oldobj.__dict__[k]
    
            # 如果key对象类型在新旧class间不同,那留用旧class的对象
            if type(oldv) != type(v):
                _log("[RD] %s : %s"%(k, _S(oldv)), depth)
                continue
    
            # 更新当前支持更新的对象
            v_type = type(v)
            handler = handlers.get(v_type)
            if handler:
                _log("[U] %s : %s"%(k, _S(v)), depth)
                handler(oldv, v, depth + 1)
                # 由于是直接改oldv的内容,所以不用再setattr了。
            else:
                _log("[RC] %s : %s : %s"%(k, type(oldv), _S(oldv)), depth)
    
        # 调用约定的reload_class接口,处理类变量的替换逻辑
        object_list = gc.get_referrers(oldobj)
        for obj in object_list:
            # 只有类型相同的才是类的实例对象
            if obj.__class__.__name__ != oldobj.__name__:
                continue
            if hasattr(obj, "x_reload_class"):
                obj.x_reload_class()

    staticmethod

    def _update_staticmethod(oldobj, newobj, depth):
        # 一个staticmethod对象,它的 sm.__get__(object)便是那个function对象
        oldfunc = oldobj.__get__(object)
        newfunc = newobj.__get__(object)
        update_function(oldfunc, newfunc, depth)

    classmethod

    def _update_classmethod(oldobj, newobj, depth):
        oldfunc = oldobj.__get__(object).im_func
        newfunc = newobj.__get__(object).im_func
        update_function(oldfunc, newfunc, depth)

    模块的更新也是相类似,就不一一粘贴了,只是在原来的reload基础上进行改良,对于模块热更新,还约定了一个reload_module接口,可以自定义数据的更新。

    下面添加一些用例:

    def x_reload_class(self):
        """ 热更新后,每个重新对象的实例都会执行这个函数
        由于新老对象的替换不会重新调用构造函数,因此有必要对热更新的类对象执行初始化逻辑
        处理新老变量的修复,函数执行环境的修复
        """
        self._new_var = 5000    # 新变量的初始化
        self.init_widget()      # 新修复的逻辑

    目前的热更新模块已经在开发调试中使用,可以方便地完成一些更新任务,但是要更新到远程客户端,还需要更多的规范和接口来处理,如闭包,内部局部变量等,需要逐步地学习和完善。



    展开全文
  • 是否需要更新,不需要更新,则退出,需要更新则从服务端的下载更新包,然后提示用户是否更新,点击更新,启动另外一个更新程序,退出停止当前客户端更新程序启动更新更新完成后,启动客户端更新程序退出。...

    启动客户端的时候,单独开一个线程,该线程主要是判断指定服务器上的更新包和本地使用的客户端是否一致,是否需要更新,不需要更新,则退出,需要更新则从服务端的下载更新包,然后提示用户是否更新,点击更新,启动另外一个更新程序,退出停止当前客户端,更新程序启动更新,更新完成后,启动客户端,更新程序退出。

    龙腾一族至尊龙骑

    展开全文
  • 最近由于在做的cordova项目需要用到热更新插件,需要安装热更新客户端,正常情况下,安装热更新客户端只需要执行命令:sudo npm install -g cordova-hot-code-push-cli(需要管理员权限,所以加上sudo);...
  • WINCE实现客户端自动更新

    热门讨论 2014-02-07 22:28:01
    WINCE实现客户端自动更新,避免手动拷贝文件到PDA中
  • javafx客户端自动更新

    2016-06-24 01:09:43
    目标:每次点击客户端更新按钮,提交客户端信息,服务器根据客户端提交信息比较判断是否需要更新,返回结果。 希望用httpclient ,数据格式用json。 应该怎么做,谁能给个例子参考下 简单点的。
  • C#客户端自动更新

    千次阅读 2018-03-20 11:30:39
    客户端程序在用户角度来说比较...客户端程序由于安装在用户电脑上,没有办法随时更新,所以一般来说,都是后台发布新版本,客户端检测到,然后启用自动更新程序,下载新版本,覆盖老版本,自动启动程序。自己做也是...
  • 请问当某一客户端更新数据到服务器后,其他客户端如何自动更新?谢谢
  • 则通知客户端无需更新,如果不一致则检查Files中各文件的SubVer,服务端将SubVer不一致 的文件发送给客户端,对于服务端有而客户端没有的文件也需要发送给客户端,处理完所 有File后,服务端将本地的history.htm与...
  • 客户端更新服务器端的地址在服务器端的下面路径下:\eas\Server\server\deploy\fileserver.ear\easWebClient有时候出现客户端不能登录或更新失败的问题,一般情况下按照下面3个步骤进行处理:步骤一、清理客户端的...
  • 客户端软件更新管理系统

    千次阅读 2016-01-16 10:33:03
    本发明提供了一种客户端软件更新管理系统,包括设于服务器端的服务端管理模块、设于客户端客户端更新模块及客户端执行模块、在服务器端与客户端建立连接的服务端接口模块,所述服务端管理模块配置要发布的更新列表...
  • centos 更新svn 客户端版本 添加源 /etc/yum.repos.d/wandisco-svn.repo    [WandiscoSVN] name=Wandisco SVN Repo baseurl=http://opensource.wandisco.com/centos/$releasever/svn-1.8/RPMS/$basearch/ ...
  • 更新客户端应用程序,对于采用Socket实现的,可以采用Socket从服务器端下载;对于其它方式, 一般可以采用以HttpWebRequest/WebClient的方式予以下载,但WebClient在下载的时候无法看到下载进度,因此,使用...
  • Microsoft Update客户端更新

    千次阅读 2014-06-25 18:39:40
    大家好,微软Microsoft Update产品组官方博客于昨天宣布了有关最新的Windows Update客户端更新的消息。根据这则博客,微软从当日开始逐渐向所有Windows 7, Windows Server 2008, Windows 8, Windows RT和Windows...
  • 客户端程序一个很大的不便的地方就是程序集更新,本文这里简单的介绍一种通用的客户端更新方案。这个方案依赖程序集的动态加载,具体方案如下: 将程序集存储在一个文件数据库中,客户端所有程序集直接从文件数据库...
  • C/s架构客户端自动更新软件

    热门讨论 2011-04-18 16:34:35
    C/S应用程序,客户端自动上传下载软件,嵌套客户端应用程序,用户直接运行更新软件即可自动下载新版本。解决了传统的C/S客户端更新麻烦的问题。
  • Oracle 11g 精简客户端打包 2012-06更新

    千次下载 热门讨论 2012-06-20 14:00:15
    可以免费分发的Oracle精简客户端 By ZhaHost in 2010.06.18 2012.05.18 重新打包,采取原生的odac xcopy方式 可连接8.1.7以上的Oracle数据库 内容来源: 用于Windows 的Oracle 数据访问组件(ODAC) 本安装包仅供...
  • 客户端软件更新策略 QCryptographicHash

    千次阅读 2020-03-15 14:14:40
    一、说明 互联网公司客户端软件升级通常分为: ...普通升级的判断条件是软件版本号,强制升级的判断条件是软件基础版本号,或者当有大版本更新或者软件构建框架升级。 增量升级只下载替换md5变化的文件 全量升级...
  • Unity客户端资源版本更新流程

    千次阅读 2018-04-25 15:52:42
    Unity客户端资源版本更新流程:
  • 客户端更新流程图

    2016-06-24 11:55:25
    更新流程图
  • SAP HANA Studio客户端版本如何更新

    千次阅读 2015-12-22 08:46:57
    SAP HANA Studio客户端版本如何更新
  • SAP HANA STUDIO客户端升级更新

    千次阅读 2016-07-04 19:25:31
    点击进入:SAP HANA STUDIO客户端升级更新
  • 使用axis编写WebService客户端(客户端自动更新) http://blog.sina.com.cn/s/blog_49f485700100m0dr.html (2010-06-30 08:31:36) 转载▼ 标签: 杂谈 分类: webservice,vba,vb,wml ...
  • WSUS客户端更新

    千次阅读 2007-12-04 16:06:00
    修改注册表 其中的内容含义如下: ...使用 WSUS 服务,dword:00000000 为禁止使用 ...另如果希望加快客户端电脑更新时间(默认20分钟自动更新),可在开始->运行里输入"wuauclt.exe /detectnow"立即更新
  • 如何更新TeamViewer电脑客户端

    千次阅读 2018-01-23 14:54:38
    当TeamViewer有新版本的时候,我们需要怎么做才可以更新它呢?今天小编就以升级最新的TeamViewer 13版本为例,教大家怎么升级更新吧! 步骤一: 在TeamViewer中文网站下载好免费使用的TeamViewer 12 版本,安装请...
  • #include <bzlib.h>为 #include "bzip2/bzlib.h",并且在bspatch.c引入头文件#include "com_example_ceshi_myapplication_BsPatch_bspatch.h"

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 762,161
精华内容 304,864
关键字:

怎样更新客户端