服务器端
package com.hadwinling.server;
import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.net.ServerSocket;
import java.net.Socket;
import java.util.UUID;
/**
* @author HadwinLing
* @version V1.0
* @Package com.hadwinling.server
* @date 2020/11/14 10:20
* 文件上传服务器:多客户端上传
* 使用线程接受客户端
*/
public class ServerFileUpload {
public static void main(String[] args) throws Exception {
ServerSocket serverSocket=new ServerSocket(7777);
System.out.println("服务器正在运行。。。。");
//Runnable接口中只有一个run方法
//Lambda:()->{}
//创建接受客户端线程
Thread thread=new Thread(()->{
while(true) {
//接收客户端
try {
Socket socket=serverSocket.accept();
//获取输入流
BufferedInputStream bis=new BufferedInputStream(socket.getInputStream());
//获取输出流,写出到项目下,保证文件唯一,使用UUID,对文件重命名
BufferedOutputStream bos=new BufferedOutputStream(new FileOutputStream(UUID.randomUUID().toString()+".png"));
//从流中读取上传的文件
byte[] b=new byte[3*1024];
int len=-1;
while((len=bis.read(b))!=-1) {
//写到服务器 进行保存
bos.write(b, 0, len);
}
//关闭资源
//需要关闭:输出流 输入流 serverSocket
//当关闭多个资源时,先开后关
bos.close();
bis.close();
socket.close();
System.out.println("文件上传成功");
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}) ;
//启动线程
thread.start();
}
}
客户端
package com.hadwinling.fileupload.client;
import java.io.*;
import java.net.ServerSocket;
import java.net.Socket;
import java.util.Scanner;
import java.util.UUID;
/**
* @author HadwinLing
* @version V1.0
* @Package com.hadwinling.fileupload.client
* @date 2020/11/14 10:19
* 文件上传服务器:多客户端上传
* 使用线程接受客户端
*/
public class ClientFileUpload {
public static void main(String[] args) throws Exception {
System.out.println("请输入您要上传的图片路径");
Scanner scanner=new Scanner(System.in);
String pathName=scanner.nextLine();
Socket client=new Socket("localhost", 7777);
//输入流,读取本地文件
BufferedInputStream bis=new BufferedInputStream(new FileInputStream(pathName));
//输出流,写到服务器
BufferedOutputStream bos=new BufferedOutputStream(client.getOutputStream());
byte[] b=new byte[3*1024];
int len=-1;
while((len=bis.read(b))!=-1) {
bos.write(b, 0, len);
}
System.out.println("文件发送完毕");
//关闭资源
bos.close();
bis.close();
client.close();
scanner.close();
System.out.println("文件上传 成功");
}
}