快速业务通道

HTTP多线程断点续传下载的尝试 - 编程入门网

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-06-22
ream(socket.getInputStream()); 287. // 读取直到换行 288. int ch; 289. boolean foundBR = false; 290. while (true) { 291. ch = bis.read(); 292. if (ch == 0xD) { 293. ch = bis.read(); 294. if (ch == 0xA) { 295. if (foundBR) { 296. break; 297. } 298. foundBR = true; 299. } else { 300. foundBR = false; 301. } 302. } else { 303. foundBR = false; 304. } 305. } 306. int len = -1; 307. while (curPos < endPos) { 308. // System.out.println(id + "=" + (endPos - curPos)); 309. len = bis.read(buf, 0, BUFFER_SIZE); 310. if (len == -1) { 311. break; 312. } 313. fos.write(buf, 0, len); 314. // System.out.println(id + "=Write OK!"); 315. curPos = curPos + len; 316. if (curPos > endPos) { 317. // 获取正确读取的字节数 318. readByte += len - (curPos - endPos) + 1; 319. } else { 320. readByte += len; 321. } 322. } 323. System.out.println("线程" + id + "已经下载完毕:" + readByte); 324. } catch (Exception ex) { 325. timeout = true; 326. } finally { 327. if (bis != null) { 328. try { 329. bis.close(); 330. } catch (Exception e) { 331. System.out.println("关闭文件失败(1)!"); 332. } 333. } 334. if (fos != null) { 335. try { 336. fos.close(); 337. } catch (Exception e) { 338. System.out.println("关闭文件失败(2)!"); 339. } 340. } 341. if (socket != null) { 342. try { 343. socket.close(); 344. } catch (Exception e) { 345. System.out.println("关闭链接失败!"); 346. } 347. } 348. } 349. if (timeout) { 350. System.out.println(id + " timeout, restart..."); 351. new HTTPDownloaderThread(manager, id, curPos, endPos).start(); 352. } else { 353. manager.finished(id); 354. } 355. } 356. }

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站: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号