计算机网络系统实践-网络文件传输_第1页
计算机网络系统实践-网络文件传输_第2页
计算机网络系统实践-网络文件传输_第3页
计算机网络系统实践-网络文件传输_第4页
计算机网络系统实践-网络文件传输_第5页
已阅读5页,还剩3页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、计算机网络系统实践报告设计题目:网络文件传输学生姓名: 学 号: 专业班级:2015 年 9 月一、设计要求1.实现单线程文件传输功能;2.在以上基础上,掌握多线程技术,在文件网络传输时,可选择单线程或多线程;3.加入异常控制依据,增强程序的鲁棒性(Robust);4.了解如何提高套接字传输的速率,以及如何加强传输的稳定性。二、开发环境与工具Jdk1.6 Myeclipse三、设计原理1.TCP/IP协议既然是网络编程,涉及几个系统之间的交互,那么首先要考虑的是如何准确的定位到网络上的一台或几台主机,另一个是如何进行可靠高效的数据传输。这里就要使用到TCP/IP协议。TCP/IP协议(传输控制

2、协议)由网络层的IP协议和传输层的TCP协议组成。IP层负责网络主机的定位,数据传输的路由,由IP地址可以唯一的确定Internet上的一台主机。TCP层负责面向应用的可靠的或非可靠的数据传输机制,这是网络编程的主要对象。2.基于Socket的Java网络编程Socket通常也称作"套接字",用于描述IP地址和端口,是一个通信链的句柄。网络上的两个程序通过一个双向的通讯连接实现数据的交换,这个双向链路的一端称为一个Socket,一个Socket由一个IP地址和一个端口号唯一确定。应用程序通常通过"套接字"向网络发出请求或者应答网络请求。 Soc

3、ket是TCP/IP协议的一个十分流行的编程界面,但是,Socket所支持的协议种类也不光TCP/IP一种,因此两者之间是没有必然联系的。在Java环境下,Socket编程主要是指基于TCP/IP协议的网络编程。Socket通讯过程:服务端监听某个端口是否有连接请求,客户端向服务端发送连接请求,服务端收到连接请求向客户端发出接收消息,这样一个连接就建立起来了。客户端和服务端都可以相互发送消息与对方进行通讯。Socket的基本工作过程包含以下四个步骤:1、创建Socket;2、打开连接到Socket的输入输出流;3、按照一定的协议对Socket进行读写操作;4、关闭Socket。在包下有两个类:

4、Socket和ServerSocket。ServerSocket用于服务器端,Socket是建立网络连接时使用的。在连接成功时,应用程序两端都会产生一个Socket实例,操作这个实例,完成所需的会话。对于一个网络连接来说,套接字是平等的,并没有差别,不因为在服务器端或在客户端而产生不同级别。不管是Socket还是ServerSocket它们的工作都是通过SocketImpl类及其子类完成的。四、系统功能描述及软件模块划分1.服务器端创建文件流读取文件中的数据,创建服务器套接字绑定到特定的端口号,侦听并接受到此套接字的连接,创建网络输出流并提供数据包装器,创建文件读取缓冲区,把文件数据写出网络缓

5、冲区,刷新缓冲区把数据写往客户端。2.客户端使用本地文件系统接受网络数据并存为新文件,通过Socket连接文件服务器,创建网络接受流接受服务器文件数据,创建缓冲区缓冲网络数据,将数据写往文件。五、设计步骤服务器端:File file = new File("D:/picture.jpg.");FileInputStream fos = new FileInputStream(file);System.out.println("server listening .");ServerSocket ss = new ServerSocket(6666);Soc

6、ket client = ss.accept();OutputStream netOut = client.getOutputStream();OutputStream doc = new DataOutputStream(new BufferedOutputStream(netOut);byte buf = new byte2048;int num = fos.read(buf);while (num != (-1) doc.write(buf, 0, num);doc.flush();/ num = fos.read(buf);/fos.close();doc.close();客户端:Fi

7、le file = new File("E:/1.jpg"); file.createNewFile();RandomAccessFile raf = new RandomAccessFile(file, "rw");Socket server = new Socket(InetAddress.getLocalHost(), 6666);InputStream netIn = server.getInputStream();InputStream in = new DataInputStream(new BufferedInputStream(netIn

8、);byte buf = new byte2048;int num = in.read(buf);while (num != (-1) raf.write(buf, 0, num);raf.skipBytes(num);num = in.read(buf);in.close();raf.close();六、设计结果实现了将服务器端的D:/picture.jpg传送到客户端的E盘并保存为1.jpg。图1.待发送文件图图2.服务器端程序运行图图3.客户端程序运行图图4.接受完成的文件思考题:1. 是阻塞的工作方式,阻塞与非阻塞相比确实有一些优点,特别是遇到错误控制问题的时候。在阻塞套接字通信中,如

9、果出现错误,该访问会自动返回标志错误的代码。错误可能是由于网络超时、套接字关闭或者任何类型的 I/O 错误造成的。在非阻塞套接字通信中,该方法能够处理的唯一错误是网络超时。哪种方式更好取决于应用程序。如果使用的是同步通信,如果数据不必在读取任何数据之前处理的话,阻塞通信更好一些,而非阻塞通信则提供了处理任何已经读取的数据的机会。而异步通信,如 IRC 和聊天客户机则要求非阻塞通信以避免冻结套接字。2. 因为非阻塞IO处理连接是异步的。当某个连接发送请求到服务器,服务器把这个连接请求当作一个请求"事件",并把这个"事件"分配给相应的函数处理。我们可以把这个

10、处理函数放到线程中去执行,执行完就把线程归还。3. 可以。socket也可以传输一个对象的,发送端和接收端都先约定好,发送端先发一个对象,接收端先接一个对象,之后的部分就是数据,数据的长度由对象的属性决定,数据传完,再传输对象,如此循环反复。4. 在Java中想实现多线程有两种手段,一种是继承Thread类,另一种就是实现Runnable接口。继承自Thread类线程的创建原理:首先定义一个线程类,该类必须继承自Thread类,同时必须明确的覆写run()方法,然后定义一个主类,实例化线程类的对象,发动启动线程的命令。实现Runnable接口:首先定义一个线程类继承自Runnable接口,然后定义一个主类,实例化线程类的对象,发动启动线程的命令。七、参考资料1 侯整风 等. 网络与信息安全系列课程实践教程. 合肥工业大学出版社,2012.2 耿祥义 张跃平. Java面向对象程序设计. 清华大学出版社,2010.八、设计体会 由于编程水平较弱,在老师和同学们的帮助下终于勉强实现了基本的文件传输的功能,用到了Socket 类和ServerSocket类,明白了它们是Java实现Socket通信的主要工具。创建

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论