iis服务器助手广告广告
返回顶部
首页 > 资讯 > 服务器 >怎么在Java中利用socket多线程访问服务器文件
  • 227
分享到

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

javasocket多线程 2023-05-30 23:05:19 227人浏览 安东尼
摘要

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

今天就跟大家聊聊有关怎么在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多线程访问服务器文件有进一步的了解吗?如果还想了解更多知识或者相关内容,请关注编程网服务器频道,感谢大家的支持。

--结束END--

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

本文链接: https://www.lsjlt.com/news/222163.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

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

下载Word文档
猜你喜欢
  • 怎么在Java中利用socket多线程访问服务器文件
    今天就跟大家聊聊有关怎么在Java中利用socket多线程访问服务器文件,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。ServerMain.javapackage com....
    99+
    2023-05-30
    java socket 多线程
  • Java中的多线程回显服务器怎么利用Socket实现
    Java中的多线程回显服务器怎么利用Socket实现?相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。具体如下:需要两个类,一个是EchoServer,代表服务器。另外一个是Ech...
    99+
    2023-05-31
    java socket 多线程
  • 怎么在JAVA中利用多线程抢红包
    这篇文章给大家介绍怎么在JAVA中利用多线程抢红包,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。代码实现import java.util.Random;import java.util.Scanne...
    99+
    2023-06-14
  • 怎么在java中利用多线程执行多个程序
    这期内容当中小编将会给大家带来有关怎么在java中利用多线程执行多个程序,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。常用的java框架有哪些1.SpringMVC,Spring Web MVC是一种基于...
    99+
    2023-06-14
  • Java中怎么利用多线程处理任务
    这篇文章将为大家详细讲解有关Java中怎么利用多线程处理任务,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。1.直接传递一批任务给到多线程处理方法,返回处理结果代码如下: publi...
    99+
    2023-06-17
  • java Socket多线程服务器源代码是怎样的
    今天就跟大家聊聊有关java Socket多线程服务器源代码是怎样的,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。java Socket多线程需要我们不断的学习,在学习的时候我们就会...
    99+
    2023-06-17
  • 怎么在java中利用继承访问变量
    今天就跟大家聊聊有关怎么在java中利用继承访问变量,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。Java是什么Java是一门面向对象编程语言,可以编写桌面应用程序、Web应用程序、...
    99+
    2023-06-14
  • 怎么在python中利用多进程取代多线程
    怎么在python中利用多进程取代多线程?很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。python是什么意思Python是一种跨平台的、具有解释性、编译性、互动...
    99+
    2023-06-14
  • 怎么在Java中利用多线程模拟站点售票
    怎么在Java中利用多线程模拟站点售票?针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。一、实验题目二、分析哦吼,这次的实验题目是一道非常经典的多线程买票问题。题目要求我们创建...
    99+
    2023-06-15
  • 在Java项目中如何利用多线程实现文件下载功能
    这篇文章将为大家详细讲解有关在Java项目中如何利用多线程实现文件下载功能,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。具体内容如下import java.io.File; import j...
    99+
    2023-05-31
    java 多线程 文件下载
  • 怎么在java中利用join阻碍线程
    这篇文章给大家介绍怎么在java中利用join阻碍线程,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。Java的特点有哪些Java的特点有哪些1.Java语言作为静态面向对象编程语言的代表,实现了面向对象理论,允许程序员...
    99+
    2023-06-14
  • C#多线程异步执行和跨线程访问控件Helper怎么用
    本文小编为大家详细介绍“C#多线程异步执行和跨线程访问控件Helper怎么用”,内容详细,步骤清晰,细节处理妥当,希望这篇“C#多线程异步执行和跨线程访问控件Helper怎么用”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习...
    99+
    2023-06-30
  • 服务端与客户端怎么利用socket传文件
    这篇文章给大家介绍服务端与客户端怎么利用socket传文件,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。逻辑:客户端将需要查找的文件名以流的形式传给服务端服务端接受客户端的连接,把流转化为字符串,进行一个目录的遍历,查...
    99+
    2023-05-31
    socket 服务端与客户端
  • 网页在线代理服务器怎么访问
    要访问一个网页在线代理服务器,您可以按照以下步骤操作:1. 打开您的浏览器,并输入以下网址:http://www.proxy-sit...
    99+
    2023-06-08
    网页在线代理
  • 在线网页代理服务器怎么访问
    要访问在线网页代理服务器,请按照以下步骤操作:1. 打开您喜欢的浏览器,如Chrome、Firefox等。2. 在浏览器地址栏中输入...
    99+
    2023-06-14
    在线网页代理
  • 国外在线代理服务器怎么访问
    访问国外在线代理服务器的步骤如下:1. 在浏览器中搜索“在线代理服务器”或“免费代理服务器”,选择一个可靠的代理服务器,如HideM...
    99+
    2023-06-14
    国外在线代理服务器 代理服务器 服务器
  • Java中怎么利用Synchronized实现多线程同步
    这期内容当中小编将会给大家带来有关Java中怎么利用Synchronized实现多线程同步,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。使用同步的原因 在系统中对访类要使用多线程进行访问; 在该类中有 类...
    99+
    2023-06-17
  • 怎么在c#中利用多线程处理多个数据
    本篇文章为大家展示了怎么在c#中利用多线程处理多个数据,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。概述多线程(multithreading),是指从软件或者硬件上实现多个线程并发执行的技术。具有多...
    99+
    2023-06-14
  • java多线程在项目中怎么应用
    Java多线程在项目中的应用主要有以下几个方面:1. 提高程序的并发性:多线程可以同时处理多个任务,提高程序的并发性,使得程序的执行...
    99+
    2023-09-29
    java
  • 怎么在c#中利用委托事件实现多线程通信
    本篇文章为大家展示了怎么在c#中利用委托事件实现多线程通信,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。在研究c# 线程之间通信时,发现传统的方法大概有三种:全局变量,由于同一进程下的多个进程之间共...
    99+
    2023-06-14
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作