一丶客户端
具体步骤看代码
import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.BufferedReader;
import java.io.FileInputStream;
import java.io.InputStreamReader;
import java.net.Socket;
public class Client {
public static void main(String[] args) throws Exception {
//1.创建客户端Socket对象,并指定ip跟端口
Socket s = new Socket("127.0.0.1",6666);
//2.将Socket中封装好的字节输出流包装成缓冲字节输出流
BufferedOutputStream bos = new BufferedOutputStream(s.getOutputStream());
//3.从指定的路径中读取要上传的文件上传到服务端
BufferedInputStream bis = new BufferedInputStream(new FileInputStream("E:/待上传文件.txt"));
//IO流经典4行代码
byte[] b = new byte[1024];
int len;
while((len=bis.read(b))!=-1){
bos.write(b, 0, len);
}
//将文件内容从缓存器刷新到服务端
bos.flush();
//告诉服务端,客户端已经上传完毕
s.shutdownOutput();
//4.获取服务端的返回结果
//将Socket中封装好的字节输入流包装成字节缓冲输入流
BufferedReader br = new BufferedReader(new InputStreamReader(s.getInputStream()));
//读取
String string = br.readLine();
System.out.println(string);
//关闭资源
bis.close();//自己创建的字节缓冲输出流
s.close();//关闭Socket,其自己封装好的输入输出流也将关闭
}
}
二丶服务端
具体步骤看代码
import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.BufferedWriter;
import java.io.FileOutputStream;
import java.io.OutputStreamWriter;
import java.net.ServerSocket;
import java.net.Socket;
import java.util.UUID;
public class Server {
public static void main(String[] args) throws Exception {
//1.创建服务端ServerSocket对象,并指定端口号
ServerSocket socket = new ServerSocket(6666);
//2.无限循环接受客户端发的请求
while(true){
Socket s = socket.accept();//阻塞式,即客户端木有请求就一直等待
//3.将ServerSocket中封装好的输入流包装成字节输入流
BufferedInputStream bis = new BufferedInputStream(s.getInputStream());
//4.将客户端上传的文件保存到指定的路径中
//为防止文件名重复 用UUID随机数+当前上传的毫秒值
BufferedOutputStream bos = new BufferedOutputStream(new FileOutputStream("D:/"+UUID.randomUUID().toString().replaceAll("-", "")+System.currentTimeMillis()+".txt"));
//IO流经典4行代码
byte[] b = new byte[1024];
int len;
while((len=bis.read(b))!=-1){
bos.write(b, 0, len);
}
//5.通过客户端连接对象获取字节输出流并包装成字节缓冲输出流
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(s.getOutputStream()));
bw.write("文件上传成功");
bw.newLine();
bw.flush();
//6.关闭资源
bos.close();
s.close();
}
}
}