news 2026/7/22 6:53:19

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/7/21 1:55:37

Pandoc转换Word文档:使用Lua过滤器统一调整Pandoc文档中的图片和表格格式

文章目录引言1. Pandoc 过滤器基础1.1 Pandoc 文档转换过程1.2 Lua 过滤器的工作原理2. 编写针对图片的过滤器2.1 基本图片过滤器2.2 高级图片处理3. 编写针对表格的过滤器3.1 基本表格过滤器3.2 高级表格格式化4. 综合过滤器示例5. 使用过滤器的方法5.1 命令行使用5.2 与Pando…

作者头像 李华
网站建设 2026/7/15 3:24:27

提示词工程能够解决什么问题?

文章目录提示词工程能够解决什么问题?1.核心定位:提示词工程是用户意图与模型能力的桥梁2.解决的关键问题(1)任务定义模糊性(2)输出格式控制(3)领域知识适配(4&#xff0…

作者头像 李华
网站建设 2026/7/20 17:59:36

基于SpringBoot+Vue的企业固定资产管理系统设计与实现

前言 🌞博主介绍:✌CSDN特邀作者、全栈领域优质创作者、10年IT从业经验、码云/掘金/知乎/B站/华为云/阿里云等平台优质作者、专注于Java、小程序/APP、python、大数据等技术领域和毕业项目实战,以及程序定制化开发、文档编写、答疑辅导等。✌…

作者头像 李华
网站建设 2026/7/10 11:40:15

基于SpringBoot的深圳市体育中心体育赛事管理系统毕业设计项目源码

项目简介在大型体育场馆赛事运营精细化、数字化需求下,深圳市体育中心传统赛事管理存在 “流程割裂、资源调度低效、数据统计滞后” 的痛点,基于 SpringBoot 构建的赛事管理系统,适配赛事运营人员、场馆管理员、参赛人员、观众等角色&#xf…

作者头像 李华