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

Socket网络编程练习题三:客户端上传文件到服务器

题目

  • 客户端:将本地文件上传到服务器,接收服务器的反馈
  • 服务端:接收客户端上传的文件,上传完毕之后给出反馈

代码实战

1、客户端代码

package com.heima;import java.io.*;
import java.net.Socket;public class Client {public static void main(String[] args) throws IOException {Socket socket = new Socket("127.0.0.1",10000);//读取本地文件中的数据,并写到服务器中BufferedInputStream bis = new BufferedInputStream(new FileInputStream("G:\\wjkwk\\clientdir\\123.jpg"));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();//接收服务器返回的数据BufferedReader br = new BufferedReader(new InputStreamReader(socket.getInputStream()));String line = br.readLine();System.out.println(line);socket.close();}
}

2、服务端代码

package com.heima;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 {ServerSocket serverSocket = new ServerSocket(10000);//等待客户端来连接Socket socket = serverSocket.accept();//读取客户端上传的文件并保存到本地BufferedInputStream bis = new BufferedInputStream(socket.getInputStream());String name = UUID.randomUUID().toString().replace("-", "");BufferedOutputStream bos = new BufferedOutputStream(new FileOutputStream("G:\\wjkwk\\serverdir\\"+name+".jpg"));int len;byte[] bytes = new byte[1024];while ((len = bis.read(bytes)) != -1){bos.write(bytes,0,len);}//回写数据BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(socket.getOutputStream()));bw.write("上传成功");bw.newLine();bw.flush();//释放资源socket.close();serverSocket.close();}
}

3、运行结果

在这里插入图片描述

http://www.lryc.cn/news/178702.html

相关文章:

  • Excel技巧之【锁定工作簿】
  • 用于自然语言处理的 Python:理解文本数据
  • 历史服务器
  • 竞赛无人机搭积木式编程(四)---2023年TI电赛G题空地协同智能消防系统(无人机部分)
  • 深入理解JavaScript中的事件冒泡与事件捕获
  • 纯css html 真实水滴效果
  • HBASE集群主节点迁移割接手动操作步骤
  • TRB爆仓分析,套利分析,行情判断!
  • LVGL - RV1109 LVGL UI刷新效率优化-02
  • 5、布局管理器
  • What is a UDP Flood Attack?
  • 多核 ARM Server 性能调优
  • oracle执行计划中,同一条语句块,在不同情况下执行计划不一样问题。子查询,union 导致索引失效。
  • 【新的小主机】向日葵远程控制ubuntu
  • 在Android studio高版本上使用低版本的Github项目库报错未能解析:Landroid/support/v4/app/FrageActivity;
  • 自动混剪多段视频、合并音频、添加文案的技巧分享
  • 学习笔记——BSGS
  • 【AI视野·今日NLP 自然语言处理论文速览 第四十期】Mon, 25 Sep 2023
  • Linux C/C++下收集指定域名的子域名信息(类似dnsmap实现)
  • linux-定时任务
  • 在Spring Boot项目中使用Redisson
  • JavaScript 函数柯里化
  • springboot实现ACL+RBAC权限体系
  • C++20协程示例
  • 【Verilog 教程】6.2Verilog任务
  • Spring修炼之路(1)基础入门
  • GANs学习记录
  • Flink-CDC——MySQL、SqlSqlServer、Oracle、达梦等数据库开启日志方法
  • linux设置tomcat redis开机自启动
  • 跨域问题讨论