TCP通信练习4-上传文件名重复问题

UUID可以生成一个随机的字符串,而且字符串的内容是唯一的。那么我们可以就用这个类去生成一个随机的文件名字。利用下面的静态方法,该方法会给你返回一个UUID的对象。

java 复制代码
package com.lkbhua.TcpAppDemp.Test.test4;

import java.util.UUID;

public class UUIDTest {
    public static void main(String[] args) {
        // UUID演示用法
        UUID uuid = UUID.randomUUID();
        System.out.println(uuid);
        // 每一次生成的都不一样
        //  8f8cbe94-1761-4466-8acb-deae01a57c02
        // 不想要里面的"-"怎么办??
        // 把横杠替换成长度为0的字符串
        String str = uuid.toString().replace("-", "");
        System.out.println(str);
        // 908a086c8c5643a3b9f18d2828be05dd
    }
}
java 复制代码
package com.lkbhua.TcpAppDemp.Test.test4;


import java.io.*;
import java.net.ServerSocket;
import java.net.Socket;
import java.util.UUID;

public class server {
    public static void main(String[] args) throws IOException {
        // TCP综合练习3------上传文件
        // 客服端: 将本地文件上传到服务器,接受服务器的反馈
        // 服务端: 接受文件并保存,返回上传成功

        // 1、创建ServerSocket对象并且绑定端口号
        ServerSocket ss = new ServerSocket(10000);
        UUID uuid = UUID.randomUUID();
        System.out.println("服务器启动了...");
        // 2、等待客户端连接
        Socket socket = ss.accept();
        System.out.println("一个客户端连接了...");
        // 3、读取数据,并保存到本地文件中
        BufferedInputStream bis = new BufferedInputStream(socket.getInputStream());
        String name = uuid.toString().replace("-", "");
        BufferedOutputStream bos = new BufferedOutputStream(new FileOutputStream("lkb06-SocketNetCode\\aaa\\" + name));
        int len;
        byte[] bytes = new byte[1024];
        while ((len = bis.read(bytes)) != -1) {
            bos.write(bytes,0,len);
        }
        System.out.println("保存完毕...");
        // 4、回写数据
        BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(socket.getOutputStream()));
        bw.write("上传成功");
        bw.newLine();
        bw.flush();
        // 5、关闭资源
        socket.close();
        ss.close();
    }
}
java 复制代码
package com.lkbhua.TcpAppDemp.Test.test4;

import java.io.*;
import java.net.Socket;

public class client {
    public static void main(String[] args) throws IOException {
        // TCP综合练习3------上传文件
        // 客服端: 将本地文件上传到服务器,接受服务器的反馈
        // 服务端: 接受文件并保存,返回上传成功

        // 1、创建socket对象,并且连接服务器
        Socket socket = new Socket("127.0.0.1",10000);
        // 2、读取本地文件中的数据,并写到服务器当中
        BufferedInputStream bis = new BufferedInputStream(new FileInputStream("lkb06-SocketNetCode\\b.txt"));
        BufferedOutputStream bos = new BufferedOutputStream(socket.getOutputStream());
        byte[] bytes = new byte[1024];
        int len;
        while ((len = bis.read(bytes)) != -1) {
            bos.write(bytes,0,len);
        }
        // 写出结束标记
        socket.shutdownOutput();
        // 3、接受服务器的回写数据
        BufferedReader br = new BufferedReader(new InputStreamReader(socket.getInputStream()));
        String line = br.readLine();
        System.out.println(line);
        // 4、关闭流资源
        socket.close();
    }
}
相关推荐
后台模板学习6 分钟前
大模型 Prompt 工程在电商订单系统中的踩坑记录
java·python·prompt
w_zero_one6 分钟前
算法--构造
java·数据结构·算法
SL_staff20 分钟前
制造业订单交付崩盘?用四层协同框架重建交付可信度(技术实践)
java·产品·全栈
其实防守也摸鱼37 分钟前
信创安全竞赛知识总结与题库
大数据·网络·人工智能·算法·安全·php
万联WANFLOW1 小时前
异地厂区视频监控远程运维:从组网到安全的实施要点
运维·网络·安全·企业组网·sdwan
SL_staff1 小时前
打破风控迭代死循环:用决策编排重构业务与技术协作链路
java·产品·全栈
衍玊2 小时前
深入剖析 TCP/IP 网络通信原理与内核实现
服务器·网络·tcp/ip
Mikko72 小时前
Redis 连接数满了服务端有错误信息吗?连接数不增加却命令超时?6.2 实测连接池、超时与大 key 怎么判定
java·spring boot·redis·后端
.Bryce.2 小时前
从零到一开发技术名词大全:从需求分析到 AI Agent 工程
java·网络·人工智能·agent·需求分析·agent评测
SL_staff2 小时前
JVS-APS的7个刚性约束设计:从无限产能幻觉到可执行排产的工程实践
java·spring cloud·全栈