public static void main(String[] args) throws IOException {// 创建一个服务器ServerSocket并和系统要指定的端口号ServerSocket server = new ServerSocket(5588);/*浏览器解析服务器回写的html页面,页面中如果有图片,那么浏览器就会单独的开启一个线程,读取服务器的图片,所以就得让服务器一直处于监听状态,客户端请求一次,服务器就回写一次*/while (true) {// 使用accept方法获取到请求的客户端对象(浏览器)Socket socket = server.accept();// 开启线程new Thread(new Runnable() {@Overridepublic void run() {BufferedReader br = null;FileInputStream fis = null;try {// 使用socket中的方法getInputStream,获取网络字节输入流对象InputStreamInputStream is = socket.getInputStream();// 把is网络字节输入流对象转换为字符缓冲输入流br = new BufferedReader(new InputStreamReader(is));// 把客户端请求信息行第一行数据读取出来 GET /baidu/baidu.html HTTP/1.1String s = br.readLine();// 把读取的数据进行切割,只要中间的部分  /baidu/baidu.htmlString[] arr = s.split(" ");// 把路径前边的/去掉,进行截取 baidu/baidu.htmlString fileName = arr[1].substring(1);System.out.println("文件名称" + fileName);// 创建本地字节输入流,构造方法中绑定要读取的html路径fis = new FileInputStream(fileName);// 使用socket中的方法getOutputStream,获取网络字节输入流对象OutputStreamOutputStream os = socket.getOutputStream();// 写入HTTP协议响应头,固定写法os.write("http/1.1 200 OK\r\n".getBytes());os.write("Content-Type:text/html\r\n".getBytes());// 必须写入空行,负责浏览器不解析os.write("\r\n".getBytes());// 一读一写复制文件,把服务器读取的html文件回写到客户端int len = 0;byte[] b = new byte[1024];while ((len = fis.read(b)) != -1) {os.write(b, 0, len);}} catch (IOException e) {e.printStackTrace();} finally {// 释放资源try {socket.close();if (br != null) {br.close();}if (fis != null) {fis.close();}} catch (IOException | NullPointerException e) {e.printStackTrace();}}}}).start();}}

简单实现B/S服务器相关推荐

  1. python简易版实例_Python3之简单搭建自带服务器的实例讲解

    WEB开发,我们先从搭建一个简单的服务器开始,Python自带服务模块,且python3相比于python2有很大不同, 在Python2.6版本里,/usr/bin/lib/python2.6/ 目 ...

  2. 一个简单的Java web服务器实现

    前言 一个简单的Java web服务器实现,比较简单,基于java.net.Socket和java.net.ServerSocket实现: 程序执行步骤 创建一个ServerSocket对象: 调用S ...

  3. 启动服务错误5拒绝访问_【Go API 开发实战 5】基础1:启动一个最简单的 RESTful API 服务器...

    启动一个最简单的 RESTful API 服务器 本节核心内容 启动一个最简单的 RESTful API 服务器 设置 HTTP Header API 服务器健康检查和状态查询 编译并测试 API 本 ...

  4. 【Go API 开发实战 5】基础1:启动一个最简单的 RESTful API 服务器

    本节核心内容 启动一个最简单的 RESTful API 服务器 设置 HTTP Header API 服务器健康检查和状态查询 编译并测试 API 本小节源码下载路径:demo01 可先下载源码到本地 ...

  5. 一个简单的python日志服务器

    一个简单的python日志服务器,主要目的是搜集各python logging记录的日志,将其简单汇总.源码如下: # -*- coding: utf-8 -*- ''' Created on 201 ...

  6. Java的echo_简单的Java echo服务器问题

    我正在尝试编写我的第一个套接字服务器,所以我决定从一个非常简单的事情开始,只是为了计算流程:)我正在编写一个简单的 java echo服务器,但问题是(出于某种原因?! )我没有在客户端获得服务器响应 ...

  7. 简单的客户机服务器投射模拟

    下面模拟了,简单的客户机服务器投射模拟的过程.客户机像服务器发送数据,服务器接受到数据后,发送回给客户机.再由客户机打印出来. 需要的函数: 网络方面 服务器 socket(AF_INET,SOCK_ ...

  8. 《UNP》随笔——“实现一个简单的回射服务器”存在的不足(信号处理)

    尽管实现了一个简单的回射服务器,但依旧存在一些不足: 服务端的子进程结束的时候,由于父进程未对子进程发送的SIGCHLD信号进行处理,会导致子进程进入僵死状态.这一点该如何解决? 客户端A向服务端B发 ...

  9. 自己动手搭建一个简单的静态资源服务器

    文章目录 自己动手搭建一个简单的静态资源服务器 介绍 一.设计到的模块 备注: 二.代码结构 三.具体代码 自己动手搭建一个简单的静态资源服务器 介绍 ​ 通过此文章的学习,可以自己使用NodeJs搭 ...

  10. SRS 简单高效的实时视频服务器

    一. 简介 SRS是一个简单高效的实时视频服务器,支持RTMP/WebRTC/HLS/HTTP-FLV/SRT. 你可以用它实现视频推流,并且支持http回调事件(HTTPCallback),还可以保 ...

最新文章

  1. Linux下对MySQL数据库的常见操作【创建】【删除】【导入数据库】
  2. 远程打包linux成镜像,ubuntu18.04 现有系统打包成镜像
  3. 构建javaweb项目
  4. Spring Cloud依赖
  5. 感觉很好的IT自学参考教程收集
  6. 线程同步与异步套接字编程
  7. Windows10最新MySQL8.0.23安装教程(超级详细)
  8. 图匠数据等提出高精度零售货架姿态估计算法GSPN
  9. OpenCV3.4.2+VS2015开发环境搭建
  10. 故事 - 100℃的人生
  11. Linux安装Nginx1.7.4、php5.5.15和配置
  12. 200 元人民币面世!
  13. [论文] Feature Squeezing:Detecting Adversarial Examples in Deep Neural Networks
  14. 2142. The Number of Passengers in Each Bus I
  15. setenv setfenv
  16. YOLOv3 cfg文件详解
  17. Oracle执行语句跟踪(1)——使用sql trace实现语句追踪
  18. 数据库作业:相关概念的解释和理解
  19. pytorch中的reshape()、view()、nn.flatten()和flatten()
  20. 王一博VS“虚拟人”?乐华“永不塌房”的偶像计划可行吗?

热门文章

  1. 仿冒应用成新型诈骗手段 社交类应用中毒最深
  2. 特征工程(1)特征工程的简介
  3. 小程序开发之页面布局
  4. twig php,Twig模板引擎用法入门教程
  5. 在数据库中能不能像用excel那样直接填表保存进数据库,而不是用SQL语句
  6. 论文画图——eps格式的图
  7. 设计模式 —— Builder 模式
  8. 写给女朋友的3D旋转相册
  9. 详解最热门搜索引擎——ES
  10. 蓝桥杯-迷宫(DFS)