基于linux下的socket通信(操作系统课程设计)

基于linux下的socket通信(操作系统课程设计)

ID:6121245

大小:79.50 KB

页数:7页

时间:2018-01-03

基于linux下的socket通信(操作系统课程设计)_第1页
基于linux下的socket通信(操作系统课程设计)_第2页
基于linux下的socket通信(操作系统课程设计)_第3页
基于linux下的socket通信(操作系统课程设计)_第4页
基于linux下的socket通信(操作系统课程设计)_第5页
资源描述:

《基于linux下的socket通信(操作系统课程设计)》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、基于Linux下的socket通信[开发平台]:LINUX[开发语言]:JAVA[开发工具]:ECLISPE[开发人员]:阚广稳(安徽理工大学计算机学院09-2班)I.系统描述:本系统含有一个服务器(Server.class)和多个客户端(Clinet.class),可以通过每个客户端查看和下载服务器端共享文件夹中的文件。II.功能描述:A.查看服务器端共享文件夹列表操作:在Linux终端下输入javaClinetlistfiles。参数说明:listfiles是固定参数。结果:列出所有共享文件。B

2、.下载服务器端共享文件夹中的文件操作:在Linux终端下输入javaClinetdownloadfilenamedirpath。参数说明:download是固定参数,filename是想要下载的文件名,dirpath是下载文件保存的路径。结果:下载文件filename到地址dirpath。III.功能分析以及实现:A.问题描述:如何创建可以用于多个客户端连接的服务器?分析解决:因为JAVA语言提供了对多线程的支持,所以我们可以把服务器设计为多线程的,对于每个客户端的连接单独开一条线程与之交互。主要实

3、现代码:服务器端:ServerSocketserversocket=newServerSocket(5678);Socketsocket;While(true){Socket=serversocket.accept();newServerThread(socket).start();}ClassServerThreadextendsThread{Socketsocket;PublicServerThread(Socketsocket){this.socket=socket;}}B.问题描述:如何把服

4、务器端的文件列表发送到客户端分析解决:服务器端如果取得一个文件名就发给客户端也是可行的,但当文件较多的时显得不清晰,如果可以把所有文件名组成的文件列表保存起来,再统一发送到客户端,客户端再统一解析文件列表就显得更合理。这其中也体现了软件设计过程中封装的思想。幸运的是强大的网络编程语言JAVA就可以很好的解决这一问题。遍历服务器端的共享文件夹,把所有文件的文件名以及它们的存储地址存放到Map中,在通过对象流的方式发送到客户端,客户端解析对象流就可以获取文件列表了。主要实现代码:服务器端:publics

5、taticMapgetAllFiles(Filefile,Mapmap){if(file.isDirectory()){File[]files=file.listFiles();for(inti=0;i

6、bjectOutputStreamobjectOutputStream=newObjectOutputStream(outputStream);objectOutputStream.writeObject(map);objectOutputStream.close();C.问题描述:如何下载服务器端的文件分析解决:由于服务器端已经把共享文件及地址的目录保存在Map中,所以只要检查用户输入的文件名(filename)是否存在Map中就可以得知所下载的文件是否存在,如果存在就可以通过Map获得该文件的存

7、储地址,服务器再找到该文件,把它发向客户端,客户端就可以把该文件存放在指定的目录(dirpath)。主要实现代码:服务器端:if(map.containsKey(fileName)){//把client请求的文件发过去Filefile2=newFile(map.get(fileName));FileInputStreamfileInputStream=newFileInputStream(file2);intbuf=0;while((buf=fileInputStream.read())!=-1){

8、outputStream.write(buf);}System.out.println("TransferSuccess!");fileInputStream.close();outputStream.close();inputStream.close();}else{//告诉Client端文件不存在outputStream.write("error".getBytes());outputStream.close();}客户端:FileOutputStreamfile

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。