服务端:
package test.testFileUpload;
import java.io.*;
import java.net.ServerSocket;
import java.net.Socket;
/**
* @author Cris
* @version 1.0
* @className Server
* @description <功能描述>
* @date 2020/1/24 21:15
*/
public class Server {
/**
* 1、接收客户端的连接
* 2、接收文件名以及后缀名
* 3、存储在当地
* 4、接收文件内容
*/
public static void main(String[] args) throws IOException {
//创建连接
ServerSocket server = new ServerSocket(9980);
Socket socket = server.accept();
//创建输入流
InputStream is = socket.getInputStream();
DataInputStream dis = new DataInputStream(is);
//读取文件名
String filename = dis.readUTF();
//获得时间戳
long time = System.currentTimeMillis();
int index = filename.lastIndexOf(".");
//文件后缀名即格式
String ext = filename.substring(index);
//文件名去除后缀名
String fileName = filename.substring(0,index);
//文件新名称
String newName = "upload/"+time+fileName+ext;
//创建输出流
FileOutputStream fos = new FileOutputStream(newName);
BufferedOutputStream bos = new BufferedOutputStream(fos);
//读取文件内容
byte[] data = new byte[1024];
int len;
while((len = dis.read(data)) != -1){
bos.write(data,0,len);
}
//接收完成,告知客户端
OutputStream os = socket.getOutputStream();
PrintStream ps = new PrintStream(os);
ps.println("接收完成");
//断开连接
bos.close();
socket.close();
server.close();
}
}
客户端:
package test.testFileUpload;
import java.io.*;
import java.net.Socket;
import java.util.Scanner;
/**
* @author Cris
* @version 1.0
* @className Client
* @description <功能描述>
* @date 2020/1/24 21:16
*/
public class Client {
/**
* 1、输入要传输的文件路径
* 2、传送文件名.后缀
* 3、发送文件内容
* 4、接收反馈结果
*/
public static void main(String[] args) throws IOException {
//建立连接
Socket socket = new Socket("192.168.31.195",9980);
//给服务器传送文件名
Scanner input = new Scanner(System.in);
OutputStream os = socket.getOutputStream();
DataOutputStream dos = new DataOutputStream(os);
System.out.println("请输入要传输的文件:");
String fileName = input.next();
File file = new File(fileName);
String name = file.getName();
dos.writeUTF(name);
//传输文件内容
FileInputStream fis = new FileInputStream(file);
byte[] data = new byte[1024];
int len;
while((len = fis.read(data)) != -1){
dos.write(data,0,len);
}
socket.shutdownOutput();
//接收反馈
InputStream inputStream = socket.getInputStream();
InputStreamReader bis = new InputStreamReader(inputStream);
BufferedReader br = new BufferedReader(bis);
String result = br.readLine();
System.out.println(result);
//关闭资源
socket.close();
fis.close();
}
}