//TCP通讯协议,服务端文件上传实现 public static void socketClient(File file) { try ( // 1. 创建流对象 // 1.1 创建输入流,读取本地文件 BufferedInputStream bis = new BufferedInputStream(new FileInputStream(file)); // 2. 创建客户端套接字,写出到服务端 // 2.1 创建客户端套接字 Socket socket = new Socket("localhost", 6666); // 2.2 创建输出流,写出到服务端 BufferedOutputStream bos = new BufferedOutputStream(socket.getOutputStream());) { // 3. 写出数据 byte[] bytes = new byte[8 * 1024]; int len; while ((len = bis.read(bytes)) != -1) { bos.write(bytes, 0, len); bos.flush(); } System.out.println("文件发送完毕!"); } catch (FileNotFoundException e1) { // TODO 日志 e1.printStackTrace(); } catch (IOException e2) { // TODO 日志 e2.printStackTrace(); } }
//TCP通讯协议,服务端文件上传实现 public static void socketServer(File file) { System.out.println("服务器启动......"); try ( //1. 创建服务端Socket ServerSocket serverSocket = new ServerSocket(6666); //2. 建立链接 Socket socketAccept = serverSocket.accept(); //3. 创建流对象 //3.1 获取输入流,读取文件数据 BufferedInputStream bis = new BufferedInputStream(socketAccept.getInputStream()); //3.2 创建输出流,保存到本地 BufferedOutputStream bos = new BufferedOutputStream(new FileOutputStream(file)); ) { //4. 读写数据 byte[] bytes = new byte[8 * 1024]; int len; while((len = bis.read(bytes)) != -1) { bos.write(bytes, 0, len); } System.out.println("上传的文件已保存!"); } catch (IOException e) { // TODO 日志 e.printStackTrace(); } }
//测试 public static void main(String[] args) { File file = new File("D:\demo\TCP\scoketServer.png"); socketServer(file); } File file = new File("D:/Downloads/壁纸/20200505.png"); socketClient(file);