我的编程空间,编程开发者的网络收藏夹
学习永远不晚

怎么在Java中利用socket多线程访问服务器文件

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

怎么在Java中利用socket多线程访问服务器文件

今天就跟大家聊聊有关怎么在Java中利用socket多线程访问服务器文件,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。

ServerMain.java

package com.ysk.webServer;import java.io.File;import java.io.IOException;import java.net.ServerSocket;import java.net.Socket;public class ServerMain {  static boolean start = true;  public static void main(String[] args) {    // 1.声明所用的对象    // ServerSocket    // Socket    // BufferedReader    // PrintStream 因为这个流是用来按照http相应规则返回数据给浏览器的,    // http响应规则中可能既要写字符又要写字节 所以使用这个流    try {      // 2 赋值,为try catch语句块外面的变量赋值      ServerSocket serverSocket = new ServerSocket(7878);      while (true) {        while (start) {          System.out.println("服务端已启动,等待客户端连接。。");          Socket socket = serverSocket.accept();          System.out.println("客户端已连接");          Thread thread = new ServerThread(socket);          thread.start();        }        // 3 处理请求,即从socket中拿出浏览器按照http协议封装好的请求(字符串)        // 关心请求行        // 按照空格拆分字符串,拆出来的第一部分是请求方式        // 拆出来的第二部分是资源路径        // 4 处理响应        // 如果 请求方式 是GET即代表没有请求体        // 从请求行中寻找到要访问的文件        // 从本地目录下查找(不是遍历整个文件系统        // 代表着我们要定义一个目录位置,此位置为数据仓库,        // 专门来存放客户端可能会访问的数据        // 咱们暂定这个目录为“项目/files”)        // 看看是否有此文件,对于/ 资源特殊处理,代表        // 如果有文件,利用输出流,把数据拼成http响应格式的数据,        // 返回给客户端(数据找到了,响应码200)        // 如果没有文件,返还error.html文件(代表比较友好的提示方式),        // 也得按照http响应格式返还error.html      }      // 如果是post方式,暂不处理    } catch (Exception e) {    }  }  // 关闭资源  // 什么时候关服务器,什么时候关客户端}

ServerThread.java

package com.ysk.webServer;import java.io.BufferedReader;import java.io.File;import java.io.FileInputStream;import java.io.IOException;import java.io.InputStreamReader;import java.io.PrintStream;import java.net.Socket;public class ServerThread extends Thread {  // 和本线程相关的Socket  Socket socket = null;  BufferedReader in = null;  BufferedReader inerror = null;  PrintStream out = null;  static boolean result = false;  static String filepath = "";  public ServerThread(Socket socket) {    this.socket = socket;  }  @Override  public void run() {    try {      in = new BufferedReader(new InputStreamReader(socket.getInputStream()));      String temp = in.readLine();      if (temp != null) {        ServerMain.start = false;        String method = temp.split(" ")[0];        System.out.println(method);        String filename = temp.split(" ")[1].replaceAll("/", "");        System.out.println(filename);        String path = "files";        findFile(path, filename);        System.out.println("result:" + result);        if (result) {          // 找到文件,以字节方式去读          String resource = filepath + filename;          getResource(resource);        } else {          // 返回error.html          String resource = "files\\error.html";          getResource(resource);        }      }    } catch (Exception e) {    } finally {      try {        if (out != null)          out.close();        if (inerror != null)          inerror.close();        if (in != null)          in.close();        if (socket != null)          socket.close();      } catch (IOException e) {        e.printStackTrace();      }    }  }//通过流去读文件  private void getResource(String resource) {    try {      FileInputStream fileInputStream = new FileInputStream(resource);      out = new PrintStream(socket.getOutputStream(), true);      out.println("HTTP/1.1 200 ok");      out.println();      int inttemp;      while ((inttemp = fileInputStream.read()) != -1) {        out.write(inttemp);      }      out.flush();      fileInputStream.close();      ServerMain.start = true;      result = false;    } catch (Exception e) {    }  }  // 查找文件  private static void findFile(String path, String filename) throws IOException {    File file = new File(path);    File[] tempList = file.listFiles();    System.out.println("该目录下对象个数:" + tempList.length);    for (int i = 0; i < tempList.length; i++) {      if (tempList[i].isFile() && filename.equals(tempList[i].getName())) {        System.out.println("已找到该文件:" + filename);        filepath = path + "\\";        result = true;      } else if (tempList[i].isDirectory()) {        // 读取某个文件夹下的所有文件夹        System.out.println("读取某个文件夹下的所有文件夹");        findFile(tempList[i].getParent() + "\\" + tempList[i].getName(), filename);      }    }  }}

看完上述内容,你们对怎么在Java中利用socket多线程访问服务器文件有进一步的了解吗?如果还想了解更多知识或者相关内容,请关注编程网行业资讯频道,感谢大家的支持。

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

怎么在Java中利用socket多线程访问服务器文件

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

怎么在Java中利用socket多线程访问服务器文件

今天就跟大家聊聊有关怎么在Java中利用socket多线程访问服务器文件,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。ServerMain.javapackage com.ysk.w
2023-05-30

Java中的多线程回显服务器怎么利用Socket实现

Java中的多线程回显服务器怎么利用Socket实现?相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。具体如下:需要两个类,一个是EchoServer,代表服务器。另外一个是Ech
2023-05-31

怎么在JAVA中利用多线程抢红包

这篇文章给大家介绍怎么在JAVA中利用多线程抢红包,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。代码实现import java.util.Random;import java.util.Scanner;public c
2023-06-14

怎么在java中利用多线程执行多个程序

这期内容当中小编将会给大家带来有关怎么在java中利用多线程执行多个程序,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。常用的java框架有哪些1.SpringMVC,Spring Web MVC是一种基于
2023-06-14

Java中怎么利用多线程处理任务

这篇文章将为大家详细讲解有关Java中怎么利用多线程处理任务,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。1.直接传递一批任务给到多线程处理方法,返回处理结果代码如下:/** * Crea
2023-06-17

怎么在Java中利用多线程模拟站点售票

怎么在Java中利用多线程模拟站点售票?针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。一、实验题目二、分析哦吼,这次的实验题目是一道非常经典的多线程买票问题。题目要求我们创建
2023-06-15

在Java项目中如何利用多线程实现文件下载功能

这篇文章将为大家详细讲解有关在Java项目中如何利用多线程实现文件下载功能,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。具体内容如下import java.io.File; import j
2023-05-31

怎么在c#中利用委托事件实现多线程通信

本篇文章为大家展示了怎么在c#中利用委托事件实现多线程通信,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。在研究c# 线程之间通信时,发现传统的方法大概有三种:全局变量,由于同一进程下的多个进程之间共
2023-06-14

怎么用阿里云服务器访问外网文件

阿里云的网络连接方式阿里云提供了多种网络连接方式,包括WiFi、4G、5G等。对于普通用户来说,最常用的网络连接方式是通过无线网络连接到互联网。通过无线网络连接,用户可以轻松地访问外网文件。在访问外网文件时,需要先确认你的设备支持WiFi网络,并且需要在阿里云的管理页面上设置你的无线网络密码。阿里云的访问控制列表访问控
2023-10-27

Java中怎么组建和修改多线程服务器

这篇文章将为大家详细讲解有关Java中怎么组建和修改多线程服务器,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。修改 acceptConnections() 以用缺省为 50(或任何您想要的大
2023-06-17

Java多线程中怎么利用Future实现携带结果的任务

本篇文章为大家展示了Java多线程中怎么利用Future实现携带结果的任务,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。Future 介绍Future表示异步计算的结果,它提供了检查计算是否完成的方
2023-06-22

Android 中怎么利用多线程重复启动与停止服务

这篇文章将为大家详细讲解有关Android 中怎么利用多线程重复启动与停止服务,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。Android 多线程实现重复启动与停止的服务多线程环境下为了避免
2023-05-30

云服务器访问本地文件夹怎么设置的密码是多少

1.为什么要设置密码?在云服务器上访问本地文件夹时,设置密码是一种常见的安全措施。通过设置密码,您可以确保只有授权的用户能够访问和修改您的本地文件夹。这可以防止未经授权的访问和潜在的数据泄露。2.如何设置密码?要设置密码,您可以按照以下步骤进行操作:步骤1:选择合适的工具首先,您需要选择适合您的操作系统和需求的工具。以
2023-10-27

阿里云服务器怎么使用域名访问网页文件

使用阿里云服务器访问网页文件,通常可以通过以下步骤进行:打开阿里云服务器,例如:https://aliyun.com/;或者在阿里云控制台中,点击“域名管理”链接。进入域名管理界面后,可以使用以下命令:a.输入要访问的域名,以及域名指向的文件夹名称。例如,如果要访问的是“www.baidu.com”,域名可以是“https://www.baidu.com”(注意,“baidu.com”和
2023-10-26

Android中怎么利用OkHttp上传文件到服务器

Android中怎么利用OkHttp上传文件到服务器,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。一、编写服务器端在上一讲服务器下新建UploadFileServlet,代
2023-05-31

阿里云服务器怎么使用域名访问外网文件

如果您使用阿里云的服务器进行访问外网文件,可以使用以下步骤:在阿里云控制台(https://cloudserver.aliyun.com)点击"文件"/"文件上传",选择需要上传的文件,然后点击"上传"按钮,等待上传完成后,即可在阿里云控制台上看到上传成功的文件。可以在阿里云控制台中找到需要访问的外网文件,点击"打开"按钮,即可打开文件进行访问。在阿里云控制台中,还可以看到其他用户上传的
2023-10-26

阿里云服务器怎么使用域名访问外网文件夹

首先,我们需要确定阿里云的域名–DNS服务的IP地址。在DNS的官网上,我们可以找到相关的配置文档。在这个文档中,我们可以看到阿里云提供的域名解析服务的详细说明。然后,我们需要在本地安装阿里云的DNS服务。我们可以使用下面的命令来安装DNS服务:pipinstallhttpd-cn.example.com安装完成后,我
阿里云服务器怎么使用域名访问外网文件夹
2023-10-28

阿里云服务器怎么使用域名访问网页文件夹

如果您要使用阿里云服务器,以访问网页文件夹,您可以按照以下步骤操作:打开阿里云官网(https://cn.alibaba.com),进入阿里云控制台页面。在控制台页面的左侧,可以看到"网页文件夹"和"网页目录"选项。在"网页文件夹"选项卡中,选择要使用的阿里云服务器。在阿里云控制台页面的右侧,可以看到“文件夹管理”选项。在"文件夹管理"选项卡中,选择要使用的阿里云文件夹和文件夹路径。在阿里云文件夹管理页
2023-10-27

java不同版本在多线程中怎么使用随机数生成器

这篇文章主要讲解了“java不同版本在多线程中怎么使用随机数生成器”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“java不同版本在多线程中怎么使用随机数生成器”吧!如何在多线程中使用随机数生
2023-07-05

编程热搜

目录