快速业务通道

CS结构软件自动升级实现(三) - 编程入门网

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-06-16
理 147      UpdFile srvFiles [] = config.getFiles(); 148      boolean isSuccess = true; 149      for(int i=0;i<srvFiles.length;i++) 150      { 151        UpdFile cf = (UpdFile)cFiles.get(srvFiles[i].getName()); 152        //文件不存在或版本号不一致则需要更新该文件 153        if(cf==null || !cf.getVersion().equals(srvFiles[i].getVersion())) 154        { 155          if(!sendFile(srvFiles[i])) 156          { 157            isSuccess = false; 158          } 159        } 160      }//END for 161      //发送版本信息文件,发送更新信息文件 162      if(isSuccess) 163      { 164        UpdFile verFile = new UpdFile("autoupdate.xml"); 165        verFile.setPath("." + File.separator + "config"); 166        verFile.setType(0); 167        verFile.setVersion(config.getVerstion()); 168        if(!sendFile(verFile)) 169        { 170          Config.print(socket.getInetAddress()+":发送版本文件失败"); 171          return 0; 172        } 173        //发送更新信息 174        UpdFile infFile = new UpdFile("history.htm"); 175        infFile.setPath("." + File.separator + "config"); 176        infFile.setType(0); 177        infFile.setVersion(config.getVerstion()); 178        if(!sendFile(infFile)) 179        { 180          Config.print(socket.getInetAddress()+":发送最新信息失败"); 181        } 182        return 1; 183      }else 184      { 185        return 0; 186      } 187    }catch(Exception e) 188    { 189      Config.print("处理需要更新文件失败,"+e); 190      e.printStackTrace(); 191      return 0; 192    } 193  } 194  //0.失败 1.成功 195  private boolean sendFileAbsPath(String path) 196  { 197    try 198    { 199      byte buffer[] = new byte[AUPD.BUFFER_SIZE]; 200      int len = 0; 201      //标识为数据段 202      buffer[0] = AUPD.MARK_DATA_SECT; 203      Config.copyArray(buffer, Config.getLen(path.getBytes().length), 1, 0, 4);//4位长度 204      //组合数据包 205      for (int i = 0; i < path.getBytes().length; i++) 206        buffer[i + 5] = path.getBytes()[i]; 207      socketOut.write(buffer, 0, path.getBytes().length + 5);//前五位为头部1位标识+4位长度 208      //标识为数据段已结束,并发送至服务器 209      buffer[0] = AUPD.MARK_DATA_END; 210      socketOut.write(buffer, 0, 1); 211      socketOut.flush(); 212      //检查客户端是否收到 213      len = socketIn.read(bFlag,0,1); 214      if(len!=1) 215      { 216        Config.print(socket.getInetAddress()+":读取标识位失败"); 217        socke

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号