服务端代码

import java.io.BufferedInputStream;import java.io.DataInputStream;import java.io.DataOutputStream;import java.io.File;import java.io.FileInputStream;import java.io.IOException;import java.io.InputStream;import java.io.OutputStream;import java.net.ServerSocket;import java.net.Socket;import java.util.Scanner;public class FunctionServer {private static int PORT = 2012;private String path = "需要下载的文件所在路径";public static void main(String[] args) throws IOException{FunctionServer server = new FunctionServer();server.start();}public void start() throws IOException{ServerSocket ss = new ServerSocket(PORT);while(true){Socket s = ss.accept();new Service(s).start();//创建线程}}class Service extends Thread{Socket s;public Service(Socket s){this.s = s;}public void run(){try{InputStream in = s.getInputStream();//得到输入流Scanner sc = new Scanner(in);OutputStream out = s.getOutputStream();while(true){String str = sc.nextLine();//读取文件名if(!str.equals(null)){System.out.println("你的文件名是"+str);//根据路径和文件名获取文件File f = new File(path+str);FileInputStream fis = new FileInputStream(f);DataInputStream dis = new DataInputStream(new BufferedInputStream(fis));byte[] buffer  = new byte[8192];DataOutputStream ps = new DataOutputStream(out);ps.writeLong((long) f.length());//发送文件大小ps.flush();while(true) {int read = 0;if(dis!=null){read = fis.read(buffer);}if(read == -1){break;}   ps.write(buffer,0,read);} ps.flush();dis.close();s.close();out.flush();break;}}}catch(IOException e){e.printStackTrace();}}}}


客户端代码,下载线程

class DownloadThread extends Thread {Socket socket;InputStream in;OutputStream out;String path = "文件保存路径";String functionName;String serverIp = "服务器IP";int socketPort = "服务端口号";int fileSize,downLoadFileSize;public DownloadThread(String functionName) {this.functionName = functionName;}@Overridepublic void run() {Looper.prepare();while(!Thread.interrupted()){try {socket = new Socket(serverIp, socketPort);InputStream in = socket.getInputStream();OutputStream out = socket.getOutputStream();out.write((functionName + "\n").getBytes("gbk"));out.flush(); // 清理缓冲,确保发送到服务端File f = new File(path + functionName);OutputStream song = new FileOutputStream(f);DataInputStream dis = new DataInputStream(new BufferedInputStream(in));DataOutputStream dos = new DataOutputStream(new BufferedOutputStream(song));fileSize = (int) dis.readLong() - 1;System.out.println("开始下载");byte[] buffer = new byte[8192];while (true) {int read = 0;if (dis != null) {read = dis.read(buffer);downLoadFileSize += read;}if (read == -1) {break;}dos.write(buffer, 0, read);}System.out.println("文件下载完成");dos.close();} catch (UnknownHostException e) {// TODO Auto-generated catch blocke.printStackTrace();} catch (IOException e) {// TODO Auto-generated catch blocke.printStackTrace();} finally {this.interrupt();}}}}


基本可以直接用,根据自己需要稍微改动就OK了 


更多相关文章

  1. ANDROID媒体文件扫描
  2. android文件访问实例
  3. Java W3C 生成 XML
  4. android混淆文件
  5. NDK打包的ANT脚本(包含引入so文件)
  6. 关于webView 上传文件问题解决
  7. Android(安卓)ToggleButton example
  8. android下多线程下载,断点续传,及暂停按钮
  9. cts android.hardware.camera2.cts.RecordingTest --testBasicRe

随机推荐

  1. 超赞!墙裂推荐这款开源、轻量无 Agent 自
  2. Oracle中最容易被忽略的那些实用特性
  3. 产品研发做到又快又好的一个核心原则
  4. Go语言开发分布式任务调度 轻松搞定高性
  5. 618大促,苏宁如何通过citus打造分布式数据
  6. python学习之做一个文件增删改查小程序
  7. 降低大数据开发难度,轻量级计算实例
  8. RHEL7.6安装Oracle11g数据库--5、安装数
  9. DMHS-达梦实时同步工具
  10. 基于 Swoft 协程框架的 PHP 微服务治理