Java网络文件传输.doc

  1. 1、本文档共4页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
Java网络文件传输

关于文件传输的问题,实际也是一种IO读写的基本问题.对于网络而言也是一种IO读写问题.因此所谓网络的文件传输实际是两种IO问题的综合讨论.这里我们首先分析一个图示.然后围绕这个图示来讨论: 图1: 分析图1我们基本可以知道从服务器文件系统中通过流把文件中的数据写入到服务器的进程中,然后把进程中的数据通过网络IO系统传递到客户机,这个阶段,网络中的数据以字节流的形式保存.当该字节流被客户进程接受后,客户进程通过客户本地文件流写入客户本地的文件系统中. ? 根据以上分析,我们基本可以确定我所需要处理的问题了.首先我们需要可以对本地文件系统IO操作的操作接口,然后是一个可以对网络IO系统进行操作的操作接口,已经一个可以把数据包装成字节流的操作接口,他们分别可以提供客户和服务器两个进程进行读写的操作.如下图所示: ? 图2: ? 根据以上分析,我们可以把问题归结到对以下编程接口的需求上: ? 1.?????????字节包装器和字节解包器, ? 2.?????????网络传输器和网络接收器 ? 3.?????????本地文件读/写器 ? ? ? 而这些Java本身的API就已经提供.他们都被包装到java.io和java.net这两个包里,这里我提供一个基于TCP/IP的实现版本,使用基于连接的方式来完成工作.我们首先介绍几个相关的JDK中的类来完成以上任务, ? 1.???????DataOutputStream和DataInputStream实现类提供了上面的字节包装和解包器的实现 ? 2.???????ServerSocket和Socekt提供了基于连接的网络传输和接受接口 ? 3.???????File,FileInputStream和FileOutputStream提供了基本的本地文件输入输出接口. ? ? 服务器端实现代码: ? import?java.io.*; ? import?java.net.*; ? public?class?FileServer{ ? ???????public?static?void?main(String[]?args)throws?Exception{ ? ??????????????//创建文件流用来读取文件中的数据 ? ??????????????File?file=new?File(lishengjie.jpg); ? ??????????????FileInputStream?fos=new?FileInputStream(file); ?????????????? ? ??????????????//创建网络服务器接受客户请求 ? ??????????????ServerSocket?ss=new?ServerSocket(3108); ? ??????????????Socket?client=ss.accept(); ?????????????? ? ??????????????//创建网络输出流并提供数据包装器 ? ??????????????OutputStream?netOut=client.getOutputStream(); ? ??????????????OutputStream?doc=new?DataOutputStream(new?BufferedOutputStream(netOut)); ? ?????????????? ? ??????????????//创建文件读取缓冲区 ? ??????????????byte[]?buf=new?byte[2048]; ? ??????????????int?num=fos.read(buf); ? ??????????????while(num!=(-1)){//是否读完文件 ? ?????????????????????doc.write(buf,0,num);//把文件数据写出网络缓冲区 ? ?????????????????????doc.flush();//刷新缓冲区把数据写往客户端 ? ?????????????????????num=fos.read(buf);//继续从文件中读取数据 ? ??????????????} ? ??????????????fos.close(); ? ??????????????doc.close(); ? ???????} ? } ? ? 客户方实现代码: ? import?java.io.*; ? import?java.net.*; ? ? public?class?FileClient{ ? ???????public?static?void?main(String[]?args)throws?Exception{ ? ??????????????//使用本地文

文档评论(0)

xy88118 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档