我们的一个C/S系统想实现在线更新的功能:客户端向服务器发请求,服务器返回一些数据给客户端。
这个系统要支持在互联网上更新。
肯定是用socket了,但具体用哪种方式好呢?是自定义一套通讯协议,还是使用http?
自定义就是怕端口被封掉,而使用http又嫌有些罗嗦,服务端还要写http服务。
另外,还有人建议说把这些服务器返回的数据先写成本地文件,客户端再从本地文件读取。我想系统
的这个数据量也不大,10K左右,这样做有必要吗?

解决方案 »

  1.   

    更新什么?程序?如果只是安装文件更新,建议你使用InstallShield打包,可以自动更新。如果是自己的部分数据,那就采用socket通讯就行了。
      

  2.   

    似乎成熟的都是用的HTTP,自定义协议也不是不可以。利弊你都提到了。在S端架设一个HTTP或FTP服务器就好,也不麻烦。可以这样,C向S请求,发送最新版本信息,S象C返回一个更新文件清单,并下载地址,这里就可能是HTTP的一个虚拟目录。如果需要一步不更新,比如1.02->1.03->1.04那就重复这个过程好了,一切由S完成,C只是一个文件下载。具体控制协议就要另外制定了。
      

  3.   

    用http可以啊,你只需要把你的update放到HTTP服务器上,注明版本,然后让你的程序下载就可以了。
      

  4.   

    继续请教。我没怎么做过http方面的开发。这种情况下,http端是否一定要用asp/jsp等写一些后台脚本,处理前端的请求。有没有什么例子,谢谢!
      

  5.   

    在线更新两种方案各有特点,但Http方式相对简单得多。若想利用HTTP服务器更新,当然无需再写专门程序,只要利用现成的Http服务器就行了,若有条件,并有服务端脚本执行权限,最好写一个后台脚本,用于验证与智能下载分析。若没有相应权限,就用普通文本文件也行,将更新内容用Ini格式放入文件,客户端先下载这个文件,分析内容后再下载需要的文件。不管哪种方式,都不建议下载文件与自己软件的Server程序用同一服务器,最好分开,实际上,供下载的多个文件分别放在多个服务器上也行。