已阅读5页,还剩2页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
服务器端:package sterning; import java.io.BufferedInputStream; import java.io.DataInputStream; import java.io.DataOutputStream; import java.io.File; import java.io.FileInputStream; import .ServerSocket; import .Socket; public class ServerTest int port = 8821; void start() Socket s = null; try ServerSocket ss = new ServerSocket(port); while (true) / 选择进行传输的文件String filePath = D:lib.rar; File fi = new File(filePath); System.out.println(文件长度: + (int) fi.length(); / public Socket accept() throws/ IOException侦听并接受到此套接字的连接。此方法在进行连接之前一直阻塞。s = ss.accept(); System.out.println(建立socket链接); DataInputStream dis = new DataInputStream(new BufferedInputStream(s.getInputStream(); dis.readByte(); DataInputStream fis = new DataInputStream(new BufferedInputStream(new FileInputStream(filePath); DataOutputStream ps = new DataOutputStream(s.getOutputStream(); /将文件名及长度传给客户端。这里要真正适用所有平台,例如中文名的处理,/还需要加工,具体可以参见Think In Java 4th里有现成的代码。ps.writeUTF(fi.getName(); ps.flush(); ps.writeLong(long) fi.length(); ps.flush(); int bufferSize = 8192; byte buf = new bytebufferSize; while (true) int read = 0; if (fis != null) read = fis.read(buf); if (read = -1) break; ps.write(buf, 0, read); ps.flush(); / 注意关闭socket链接哦,不然客户端会等待server的数据过来,/ 直到socket超时,导致数据不完整。 fis.close(); s.close(); System.out.println(文件传输完成); catch (Exception e) e.printStackTrace(); public static void main(String arg) new ServerTest().start(); 2.sooket 的Util类package sterning; import .*; import java.io.*; public class ClientSocket private String ip; private int port; private Socket socket = null; DataOutputStream out = null; DataInputStream getMessageStream = null; public ClientSocket(String ip, int port) this.ip = ip; this.port = port; /* */* 创建socket连接* * throws Exception* exception*/public void CreateConnection() throws Exception try socket = new Socket(ip, port); catch (Exception e) e.printStackTrace(); if (socket != null)socket.close(); throw e; finally public void sendMessage(String sendMessage) throws Exception try out = new DataOutputStream(socket.getOutputStream(); if (sendMessage.equals(Windows) out.writeByte(0x1); out.flush(); return; if (sendMessage.equals(Unix) out.writeByte(0x2); out.flush(); return; if (sendMessage.equals(Linux) out.writeByte(0x3); out.flush(); else out.writeUTF(sendMessage); out.flush(); catch (Exception e) e.printStackTrace(); if (out != null)out.close(); throw e; finally public DataInputStream getMessageStream() throws Exception try getMessageStream = new DataInputStream(new BufferedInputStream(socket.getInputStream(); return getMessageStream; catch (Exception e) e.printStackTrace(); if (getMessageStream != null)getMessageStream.close(); throw e; finally public void shutDownConnection() try if (out != null)out.close(); if (getMessageStream != null)getMessageStream.close(); if (socket != null)socket.close(); catch (Exception e) 3.客户端:package sterning; import java.io.BufferedOutputStream; import java.io.DataInputStream; import java.io.DataOutputStream; import java.io.FileOutputStream; public class ClientTest private ClientSocket cs = null; private String ip = localhost; / 设置成服务器IPprivate int port = 8821; private String sendMessage = Windwos; public ClientTest() try if (createConnection() sendMessage(); getMessage(); catch (Exception ex) ex.printStackTrace(); private boolean createConnection() cs = new ClientSocket(ip, port); try cs.CreateConnection(); System.out.print(连接服务器成功! + n); return true; catch (Exception e) System.out.print(连接服务器失败! + n); return false; private void sendMessage() if (cs = null)return; try cs.sendMessage(sendMessage); catch (Exception e) System.out.print(发送消息失败! + n); private void getMessage() if (cs = null)return; DataInputStream inputStream = null; try inputStream = cs.getMessageStream(); catch (Exception e) System.out.print(接收消息缓存错误n); return; try /本地保存路径,文件名会自动从服务器端继承而来。String savePath = E:; int bufferSize = 8192; byte buf = new bytebufferSize; int passedlen = 0; long len=0; savePath += inputStream.readUTF(); DataOutputStream fileOut = new DataOutputStream(new BufferedOutputStream(new BufferedOutputStream(new FileOutputStream(savePath); len = inputStream.readLong(); System.out.println(文件的长度为: + len + n); System.out.println(开始接收文件! + n); while (true) int read = 0; if (inputStream != null) read = inputStream.read(buf); passedlen += read; if (read = -1) break; /下面进度条本为图形界面的prograssBar做的,这里如果是打文件,/可能会重复打印出一些相同的百分比System.out.println(文件接收了 + (passedlen * 100/ len) + %n
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 初中实词第06组:效、信、修、许、易、益、意、曾(答案版)
- 全国大学生职业规划大赛《警犬技术》专业生涯发展展示【高职(专科)】
- 慢性阻塞性肺病常见症状解读及护理指南
- 肋骨骨折护理评估
- 内分泌科糖尿病足溃疡护理管理指南
- 2025年国际档案日知识竞赛参考试题库(含答案)
- 雷锋精神分享会会议议程
- 2025年文物学试题及答案
- 2025事业单位招聘题库试题及参考答案详解
- 2025(完整版)安全培训考试试题(+答案)
- 四年级数学上册口算练习卡约2400题
- MOOC 电工技术与实训-深圳职业技术学院 中国大学慕课答案
- 青春期生理变化
- 国家开放大学《Python语言基础》实验4:条件分支结构基本应用参考答案
- 预防错装漏装措施
- 船舶火灾的危险性及预防范本
- 主要树种树高级立木材积表
- JJG 443-2023燃油加油机(试行)
- 历年大学英语四六级翻译真题
- 燃气管网新建及改造冬雨季施工措施
- 【老年患者留置导尿漏尿的护理措施综述报告4000字】
评论
0/150
提交评论