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();
    }
}
相关推荐
2601_962071571 小时前
【Java报错已解决】org.springframework.beans.factory.BeanCreationException
java·开发语言
小诗懂技术1 小时前
【网络通信UDP】基础 进程间不同主机的通信
运维·服务器·网络
zww89491112 小时前
酒馆预约系统开发实战:从需求分析到上线全流程指南
java·eclipse
DM今天肝到几点?3 小时前
AI 安全进入「攻防同频」:Gemini 3.8 Flash Cyber 上线、Astra 触及关键级、HiddenLayer 融资 1 亿美元
网络·人工智能·深度学习·安全·语言模型·开源·知识图谱
幼儿园蛋小黑4 小时前
TCP 并发:从原理到高并发实践
网络·网络协议·tcp/ip
zww89491114 小时前
匿名树洞系统开发实战:从需求分析到部署指南
java·eclipse
黑马程序员毕设5 小时前
基于Java的医院药品管理系统的优化设计与实现
java·开发语言·spring boot·小程序·架构·课程设计·毕设
木井巳5 小时前
【BFS/DFS 解决 FloodFill 算法】太平洋大西洋水流问题
java·算法·leetcode·深度优先·广度优先·宽度优先·推荐算法
我爱cope6 小时前
【计算机网络 | 网络层11:ICMP 协议:Ping 和 Traceroute 的底层原理】
网络·学习·计算机网络
白山编程大哥6 小时前
Java 集合算法:从排序、查找到底层原理的实战指南
java·python·算法