news 2026/6/9 23:27:22

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/10 18:20:29

Java毕设项目:基于springboot+vue技术的二手车交易管理系统的设计与实现(源码+文档,讲解、调试运行,定制等)

博主介绍:✌️码农一枚 ,专注于大学生项目实战开发、讲解和毕业🚢文撰写修改等。全栈领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java、小程序技术领域和毕业项目实战 ✌️技术范围:&am…

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

如何对数据仓库(Data Warehouse)的ETL过程进行测试?

数据仓库ETL测试的必要性与挑战 随着企业数据驱动决策的普及,数据仓库(Data Warehouse)作为核心数据枢纽,其ETL(抽取、转换、加载)过程的可靠性和准确性直接影响数据分析质量。对软件测试从业者而言&#…

作者头像 李华
网站建设 2026/6/10 5:16:58

计算机Java毕设实战-基于springBool+Vue小吃美食分享平台的设计与实现【完整源码+LW+部署说明+演示视频,全bao一条龙等】

博主介绍:✌️码农一枚 ,专注于大学生项目实战开发、讲解和毕业🚢文撰写修改等。全栈领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java、小程序技术领域和毕业项目实战 ✌️技术范围:&am…

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

Claude Code Token烧钱预警!90%的成本浪费都能这样省

Claude Code Token烧钱预警!90%的成本浪费都能这样省 用Claude Code写代码的开发者,大概率都经历过这种“冰与火之歌”:一边惊叹于它分析代码库、修复Bug、独立完成模块开发的高效,直呼“生产力神器”;另一边对着Token…

作者头像 李华
网站建设 2026/6/10 15:54:43

基于SpringBoot的水族馆商品销售与经营管理系统毕业设计项目源码

项目简介在水族馆多元化经营、精细化管理需求下,传统水族馆商品销售存在 “线上线下割裂、库存管理混乱、经营数据滞后” 的痛点,基于 SpringBoot 构建的商品销售与经营管理系统,适配游客、店员、采购人员、场馆管理员等角色,实现…

作者头像 李华
网站建设 2026/6/10 15:53:21

【学术英语】题库 - 排序题汇总与解析

文章目录Set 1: OrderingSet 7: Ordering (Education Theme)Set 8: Ordering (Environmental Policy Theme)第二套:排序题 (Ordering)第三套:排序题 (Ordering)第四套:排序题 (Ordering)第五套:排序题 (Ordering)第六套&#xff1…

作者头像 李华