news 2026/4/27 22:12:23

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/4/25 20:28:59

验证回文串,x的平方根(左右指针)

这个题用暴力法会超时,使用左右指针。首先考虑如果不允许删除字符,如何判断一个字符串是否是回文串。常见的做法是使用双指针。定义左右指针,初始时分别指向字符串的第一个字符和最后一个字符,每次判断左右指针指向的字符是否相同…

作者头像 李华
网站建设 2026/4/17 15:09:00

ant design pro不安装第三方库,如何实现多标签页面(带源码)

在中后台管理系统开发场景中,动态标签页是提升用户操作体验的核心功能 —— 它模拟浏览器标签页交互逻辑,支持多页面并行操作、自由切换,还能保留用户的操作轨迹。本文将基于 React Umi(umijs/max) Ant Design 技术栈…

作者头像 李华
网站建设 2026/4/24 2:39:44

2025最新!研究生必备8个AI论文平台:开题报告与文献综述全测评

2025最新!研究生必备8个AI论文平台:开题报告与文献综述全测评 2025年研究生必备AI论文平台测评:如何选择高效工具? 在科研日益数字化的今天,研究生群体对AI论文工具的需求愈发迫切。从开题报告到文献综述,从…

作者头像 李华
网站建设 2026/4/27 17:58:12

基于SpringBoot的图书管理系统的设计与实现毕业设计项目源码

项目简介 在图书馆数字化升级、借阅服务精细化需求下,传统图书管理存在 “借阅流程繁琐、库存盘点低效、读者画像缺失” 的痛点,基于 SpringBoot 构建的图书管理系统,适配读者、图书管理员、馆内运营人员等角色,实现图书借阅、馆藏…

作者头像 李华
网站建设 2026/4/23 15:59:07

2025最新!9款AI论文软件测评:本科生写论文必备神器

2025最新!9款AI论文软件测评:本科生写论文必备神器 2025年AI论文工具测评:为何值得一看? 随着人工智能技术的不断进步,AI论文写作工具逐渐成为高校学生,尤其是本科生撰写学术论文的重要辅助手段。然而&…

作者头像 李华