news 2026/6/15 12:15:03

TCP通信练习5-上传文件(多线程)

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
TCP通信练习5-上传文件(多线程)

多线程内的代码:

package com.lkbhua.TcpAppDemp.Test.test5; import java.io.*; import java.net.Socket; import java.util.UUID; public class MyRunnable implements Runnable { Socket socket; UUID uuid = UUID.randomUUID(); public MyRunnable(Socket socket) { this.socket = socket; } @Override public void run() { try { 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、关闭资源 } catch (IOException e) { e.printStackTrace(); } finally { if(socket != null){ try { socket.close(); } catch (IOException e) { e.printStackTrace(); } } } } }
package com.lkbhua.TcpAppDemp.Test.test5; 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("服务器启动了..."); while(true){ // 2、等待客户端连接 Socket socket = ss.accept(); // 开启一条线程 // 一个用户就对应服务端的一条线程 new Thread(new MyRunnable( socket)).start(); } } }
package com.lkbhua.TcpAppDemp.Test.test5; 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(); } }
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/6/9 16:06:14

反射2-获取class对象的三种方式

一、反射 在Java中,Class对象是反射机制的起点,它代表了JVM中加载的类的元数据。获取Class对象就像拿到了"类的身份证",有了它才能进行反射操作(如动态创建对象、调用方法、修改字段等)。 通俗比喻&#xf…

作者头像 李华
网站建设 2026/5/22 20:16:16

新品限免|国产大模型工程化实战:GLM-4.7与MiniMax M2.1 免费选型对比

一、技术定位与核心差异解析 在参与多个企业级项目开发后,我深刻体会到GLM-4.7与MiniMax M2.1在工程化落地中的差异化表现。这两款国产大模型已形成互补的技术生态,分别针对不同开发场景进行了深度优化。 GLM-4.7:复杂工程任务的一次性交付引…

作者头像 李华
网站建设 2026/6/13 8:19:26

vue基于python的民宿房间预订推荐系统的设计与实现_7r8s9b63(pycharm django flask)

目录已开发项目效果实现截图开发技术路线相关技术介绍核心代码参考示例结论源码lw获取/同行可拿货,招校园代理 :文章底部获取博主联系方式!已开发项目效果实现截图 同行可拿货,招校园代理 vue基于python的民宿房间预订推荐系统的设计与实现_7r8s9b63(…

作者头像 李华
网站建设 2026/6/13 23:28:19

Python+uniapp微信小程序智慧木材加工厂企业员工管理系统_o9dzif83

目录已开发项目效果实现截图开发技术路线相关技术介绍核心代码参考示例结论源码lw获取/同行可拿货,招校园代理 :文章底部获取博主联系方式!已开发项目效果实现截图 同行可拿货,招校园代理 Pythonuniapp微信小程序智慧木材加工厂企业员工管理系统_o9dz…

作者头像 李华
网站建设 2026/6/10 14:38:49

python基于web教师科研成果管理系统_747i23s5

目录已开发项目效果实现截图开发技术路线相关技术介绍核心代码参考示例结论源码lw获取/同行可拿货,招校园代理 :文章底部获取博主联系方式!已开发项目效果实现截图 同行可拿货,招校园代理 python基于web教师科研成果管理系统_747i23s5 开发技术路…

作者头像 李华
网站建设 2026/6/13 21:21:13

博睿数据「2025年度可观测性实践精选案例集」重磅发布 !

2025年,数字经济高质量发展加速推进,数字技术与实体经济的深度融合,正驱动企业广泛采用多云架构以加速创新,随着系统规模的激增与交互的复杂化,如何驾驭数字系统成为关键挑战。与此同时,GenAI、LLM、AIGC及…

作者头像 李华