

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();
}
}