当前位置: 首页 > news >正文

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(); } }
http://www.jsqmd.com/news/135613/

相关文章:

  • 自适应滤波算法的FPGA实现思路
  • Pandoc转换Word文档:使用Lua过滤器统一调整Pandoc文档中的图片和表格格式
  • 别再自己苦熬写论文了!8款免费AI神器30分钟搞定,文理医工全覆盖
  • vue基于python的民宿房间预订推荐系统的设计与实现_7r8s9b63(pycharm django flask)
  • hive3之数据倾斜解决方案
  • Java毕设选题推荐:基于springboot的美发商城系统基于springboot美发门店管理系统设计与实现【附源码、mysql、文档、调试+代码讲解+全bao等】
  • VFF-Net:一种取代反向传播的AI训练新算法
  • Java计算机毕设之基于Java的停车场管理系统(完整前后端代码+说明文档+LW,调试定制等)
  • Java毕设项目推荐-基于springboot+vue技术的二手车交易管理系统的设计与实现基于SpringBoot的二手车交易平台设计与实现【附源码+文档,调试定制服务】
  • springboot-vue企业会议交换机设备维修批量运维管理系统 vue没论文py09
  • vue基于python的物业维修服务预约平台_g310h596(pycharm django flask)
  • 数据库介绍
  • Dubbo分组(Group)使用指南:建立服务接口的多版本管理与环境隔离
  • Java计算机毕设之基于springBool+Vue美食分享平台的设计与实现基于SpringBoot + Vue的美食网站系统(完整前后端代码+说明文档+LW,调试定制等)
  • 深入解析:Elastic 线下 Meetup 将于 2026 年 1 月 10 号下午在北京举行
  • 2025最新!研究生必备8个AI论文平台:开题报告与文献综述全测评
  • vue基于python的理发店会员管理系统设计与实现_98y5iv88(pycharm django flask)
  • Java毕设项目推荐-基于 Java+Spring Boot 的停车场管理系统基于Java的停车场管理系统【附源码+文档,调试定制服务】
  • 【毕业设计】基于Java的停车场管理系统(源码+文档+远程调试,全bao定制等)
  • 滑动窗口最大值:你以为是数组题,其实是在考“思维是否在线”
  • Java毕设项目:基于springboot的户外救援系统(源码+文档,讲解、调试运行,定制等)
  • 12/24第四章
  • vue基于python的人才招聘系统_y9jyn56q(pycharm django flask)
  • 12.24 - 螺旋矩阵 指针和引用的区别
  • 【课程设计/毕业设计】基于java的智能停车场管理系统基于Java的停车场管理系统【附源码、数据库、万字文档】
  • springboot-vue基于Python可视化的学习做题答题统计系统的设计与实现vue
  • Java毕设项目推荐-基于springBool+Vue美食分享平台的设计与实现基于网络平台的美食分享【附源码+文档,调试定制服务】
  • vue基于python的企业人事绩效考核综合管理系统_z006916a(pycharm django flask)
  • 事后诸葛亮会议报告 - Nyanya-
  • 白嫖党福音:Coze 双旗舰模型限时免费!接入 AIPing 打造你的专属 C++ 后端分析专家