news 2026/4/17 12:05:33

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/18 3:46:47

C#文件操作指南

C#文件操作全面总结一、文件操作的三种主要方式在C#中处理文件有三种层次的方法,从简单到复杂分别是:1. File类(最简单) - 快餐店csharp// 就像去快餐店,告诉服务员你要什么,他帮你完成所有步骤 File.Write…

作者头像 李华
网站建设 2026/4/18 3:47:10

全网首发 DeepSeek V3.2与GPT-5.2 Pro混合架构实战 手把手教你搭建超级AI助手

在AI技术日新月异的今天。 单一模型的局限性愈发明显。 我们正处于一个模型大爆炸的时代。 DeepSeek V3.2以其极致的性价比著称。 GPT-5.2 Pro则代表了逻辑推理的巅峰。 而Gemini-3系列在长文本处理上独树一帜。 作为开发者。 我们不应做选择题。 我们应该做填空题。 …

作者头像 李华
网站建设 2026/4/13 0:01:55

LLM Weekly(2025.12.15-12.21)

网络资讯速递 全新ChatGPT图像功能正式上线。OpenAI推出由其最强文本生成图像模型GPT-Image-1.5驱动的ChatGPT图像功能,该功能已向所有ChatGPT用户及API调用用户开放。这款模型指令遵循精度更高,在图像编辑过程中能精准保留光影、构图与人物肖像特征,优化了密集文本渲染效果…

作者头像 李华
网站建设 2026/4/17 8:46:40

vue基于python的固定资产转移管理系统设计与实现_qfms7508(pycharm django flask)

目录已开发项目效果实现截图开发技术路线相关技术介绍核心代码参考示例结论源码lw获取/同行可拿货,招校园代理 :文章底部获取博主联系方式!已开发项目效果实现截图 同行可拿货,招校园代理 vue基于python的固定资产转移管理系统设计与实现_qfms7508(py…

作者头像 李华
网站建设 2026/4/17 23:23:49

vue基于python的理发店会员管理系统设计与实现_98y5iv88(pycharm django flask)

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

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

基于微信小程序的周边美食推荐商城系统_2axo8

文章目录具体实现截图主要技术与实现手段系统设计与实现的思路系统设计方法java类核心代码部分展示结论源码lw获取/同行可拿货,招校园代理 :文章底部获取博主联系方式!具体实现截图 本系统(程序源码数据库调试部署讲解)带文档1万…

作者头像 李华