使用socket进行服务端与客户端传文件的方法

发布时间 - 2026-01-11 02:51:08    点击率:

逻辑:

1.客户端将需要查找的文件名以流的形式传给服务端

2.服务端接受客户端的连接,把流转化为字符串,进行一个目录的遍历,查找是否存在需要的文件,若未找到,则输出未找到,若找到,则将文件转化为流,传给客户端

3.客户端准备接受,将服务端传过来的流转化为文件,存储下载。

4,至此,完成一个简单的客户端与服务端传输文件的小栗子~

Client.Java

package com.ysk;
import java.io.BufferedReader;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.io.OutputStreamWriter;
import java.io.PrintWriter;
import java.net.ServerSocket;
import java.net.Socket;
import java.net.UnknownHostException;
public class Client {
  public static void main(String[] args) {
    try {
      Socket socket = new Socket("127.0.0.1", 5555);
      OutputStream os = socket.getOutputStream();// 字节输出流
      PrintWriter pw = new PrintWriter(os);
      pw.write("aa.txt");//输入需要搜索的文件名
      pw.flush();
      socket.shutdownOutput();
      BufferedReader in = new BufferedReader(new InputStreamReader(socket.getInputStream()));
      String a = "";
      String temp = "";
      while ((temp = in.readLine()) != null) {
        a += temp;
      }
      PrintWriter out = new PrintWriter(new OutputStreamWriter(new FileOutputStream("src\\asb.txt")));
      out.write(a);
      out.flush();
      out.close();
    } catch (UnknownHostException e) {
      e.printStackTrace();
    } catch (IOException e) {
      e.printStackTrace();
    } finally {
    }
  }
}

Server.java

package com.ysk;
import java.io.BufferedReader;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.io.PrintWriter;
import java.net.ServerSocket;
import java.net.Socket;
public class Server {
  static ServerSocket serverSocket;
  public static void main(String[] args) {
    try {
      serverSocket = new ServerSocket(5555);
      System.out.println("***服务器即将启动,等待客户端的连接***");
      Socket socket = serverSocket.accept();
      BufferedReader br = new BufferedReader(new InputStreamReader(socket.getInputStream()));
      String file = br.readLine();
      findFile("src", file);
      if (result) {
        System.out.println("已找到" + file);
        File f = new File(file);
//       File copyfile = new File("src\\file", "bb.txt");
        BufferedReader in = new BufferedReader(new InputStreamReader(new FileInputStream(filepath + file)));
        System.out.println(filepath + file);
        String a = "";
        String temp = "";
        while ((temp = in.readLine()) != null) {
          a += temp;
        }
        PrintWriter out = new PrintWriter(new OutputStreamWriter(socket.getOutputStream()));
        out.write(a);
        out.flush();
        socket.shutdownOutput();
      } else {
        System.out.println("未找到文件");
      }
    } catch (IOException e) {
      e.printStackTrace();
    }
  }

需自备aa.txt,这种资源文件,以便测试。

总结

以上所述是小编给大家介绍的使用socket进行服务端与客户端传文件的方法,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对网站的支持!


# socket客户端和服务端  # socket  # 服务端  # 客户端  # 传文件  # Java基于socket实现的客户端和服务端通信功能完整实例  # Java编程Socket实现多个客户端连接同一个服务端代码  # 基于Java的Socket多客户端Client-Server聊天程序的实现  # 详解基于java的Socket聊天程序——服务端(附demo)  # 客户端Socket与服务端ServerSocket串联实现网络通信  # 未找到  # 小编  # 在此  # 遍历  # 给大家  # 转化为  # 所述  # 给我留言  # 感谢大家  # 是否存在  # 则将  # 疑问请  # 有任何  # 传输文件  # import  # io  # OutputStreamWriter  # IOException 


相关栏目: 【 网站优化151355 】 【 网络推广146373 】 【 网络技术251813 】 【 AI营销90571


相关推荐: 学生网站制作软件,一个12岁的学生写小说,应该去什么样的网站?  如何用AWS免费套餐快速搭建高效网站?  Laravel如何实现用户角色和权限系统_Laravel角色权限管理机制  Laravel Fortify是什么,和Jetstream有什么关系  深圳防火门网站制作公司,深圳中天明防火门怎么编码?  制作旅游网站html,怎样注册旅游网站?  VIVO手机上del键无效OnKeyListener不响应的原因及解决方法  昵图网官网入口 昵图网素材平台官方入口  武汉网站设计制作公司,武汉有哪些比较大的同城网站或论坛,就是里面都是武汉人的?  微信h5制作网站有哪些,免费微信H5页面制作工具?  Laravel定时任务怎么设置_Laravel Crontab调度器配置  laravel怎么配置Redis作为缓存驱动_laravel Redis缓存配置教程  rsync同步时出现rsync: failed to set times on “xxxx”: Operation not permitted  如何打造高效商业网站?建站目的决定转化率  Laravel如何使用模型观察者?(Observer代码示例)  JS实现鼠标移上去显示图片或微信二维码  打开php文件提示内存不足_怎么调整php内存限制【解决方案】  详解Android——蓝牙技术 带你实现终端间数据传输  香港服务器租用费用高吗?如何避免常见误区?  微信小程序 require机制详解及实例代码  🚀拖拽式CMS建站能否实现高效与个性化并存?  详解免费开源的.NET多类型文件解压缩组件SharpZipLib(.NET组件介绍之七)  uc浏览器二维码扫描入口_uc浏览器扫码功能使用地址  Win11任务栏卡死怎么办 Windows11任务栏无反应解决方法【教程】  如何在 Pandas 中基于一列条件计算另一列的分组均值  Laravel如何使用Eloquent进行子查询  悟空浏览器如何设置小说背景色_悟空浏览器背景色设置【方法】  Laravel项目如何进行性能优化_Laravel应用性能分析与优化技巧大全  如何用已有域名快速搭建网站?  青岛网站建设如何选择本地服务器?  Laravel怎么实现验证码(Captcha)功能  如何在企业微信快速生成手机电脑官网?  公司网站制作价格怎么算,公司办个官网需要多少钱?  Laravel如何实现数据导出到PDF_Laravel使用snappy生成网页快照PDF【方案】  详解jQuery中基本的动画方法  黑客如何利用漏洞与弱口令入侵网站服务器?  如何利用DOS批处理实现定时关机操作详解  如何在建站之星绑定自定义域名?  Laravel如何实现API速率限制?(Rate Limiting教程)  Chrome浏览器标签页分组怎么用_谷歌浏览器整理标签页技巧【效率】  香港服务器选型指南:免备案配置与高效建站方案解析  如何用虚拟主机快速搭建网站?详细步骤解析  php 三元运算符实例详细介绍  独立制作一个网站多少钱,建立网站需要花多少钱?  Laravel如何使用API Resources格式化JSON响应_Laravel数据资源封装与格式化输出  如何快速辨别茅台真假?关键步骤解析  android nfc常用标签读取总结  手机钓鱼网站怎么制作视频,怎样拦截钓鱼网站。怎么办?  如何使用 jQuery 正确渲染 Instagram 风格的标签列表  Laravel模型关联查询教程_Laravel Eloquent一对多关联写法