Java自制简易http服务器(1)

Java用socket基于http协议搭建一个简易的http服务器 目录前言正文socket侦听localhost的端口HttpServerThread类的实现HttpServerThread类大致框架HttpServerThread类 run 方法的实现分析请求头信息尝试获取本地文件对象传输文件:发送响应包头传输文件:发送文件内容完整代码演示传输html页面传输图片404 not found 页面 前言 上一篇【Java使用socket通过http下载文件】介绍了如何模拟一个“客户端”,从指定的url下载文件,那么今天来模拟一下“服务端” 在这个十分简陋的服务端搭建完成之 阅读详情

由于计算机网络原理这门课的作业……嗯,简单练习了下做一个简易的服务器


该简易服务器十分简陋(甚至只有两个状态(200和404),只接受get方法),同时也没有使用任何比较复杂的类和包。

代码基本纯暴力实现……

import java.io.*;
import java.net.*;

public class Java_web_test {
    public static void main(String args[]) throws IOException {
    ServerSocket tt=new ServerSocket(6699);//监听6699端口
while(true){ String rootpath=System.getProperty("user.dir")+File.separator+"静态网页";//网页文件夹叫做静态网页,前面的是获取系统下当前Java文件的路径 Socket mt = tt.accept(); BufferedReader asd =new BufferedReader(new InputStreamReader(mt.getInputStream()));//获得套接字传来的输入流 String m; m=asd.readLine();//读取首部第一行的请求文件 System.out.println(m); String[] array=m.split(" ");//按照空格分开 while(asd.ready()){//打印请求报文 m=asd.readLine(); System.out.println(m); } System.out.println(); File sll=new File(rootpath+array[1]);//获取请求文件 if(sll.isFile()){//文件存在,走200 BufferedReader mmt=new BufferedReader(new FileReader(rootpath+array[1])); m=mmt.readLine(); BufferedWriter ssd=new BufferedWriter(new OutputStreamWriter(mt.getOutputStream())); StringBuffer n=new StringBuffer();//存读取的文件数据 n.append("Http/1.1 200 OK \r\n\r\n");//造一个http报文头 int a=1,b=0; n.append(m); while(mmt.ready()){//数据全部写入缓冲 n.append(mmt.readLine()); a=n.length(); if(a==b){ break; } b=a; } ssd.write(n.toString()); System.out.println(n.toString());//打印写出报文 ssd.flush();//发送 } else{//不存在,走404 BufferedWriter sdd=new BufferedWriter(new OutputStreamWriter(mt.getOutputStream())); sdd.write("Http/1.1 404 ERROR \r\n\r\n"); sdd.flush(); } mt.shutdownOutput(); mt.close();//关闭端口 } }}



希望能给大家一个关于java服务器的简单思路和框架

【项目】简易http服务器流程图分析 看这篇博客前先看-http协议基础知识总结:http://blog.youkuaiyun.com/llzk_/article/details/70513739http服务器是基于C/S模式(客户端/服务器),应用层使用http协议,传输层使用TCP协议。基本框架如下: 本http服务器规格如下: 1、使用HTTP1.0版本协议 2、仅处理GET和POST两种请求 3、使用短连接逻辑流程图参照代码阅读:代 阅读详情

相关推荐

Java实现简易Tomcat服务器(清晰易懂)

Tomcat服务器是一个轻量级的Java代码实现的WEB服务器。这篇文章将会讲述如何用Java实现一个简易版的Tomcat服务器。 简单的讲,简易原理是这样的: 1. Tomcat开始运行之后,会在主机上开一个端口(默认是80端口),在所开辟的端口上运行一个ServerSocket,执行accept()方法等待浏览器访问。 2. 浏览器访问目标主机的80端口,ServerSocket的acc

LiQiyao的博客 6676

JAVA实现简易HTTP服务器

说实话,之前完全没有想过,我还能写出服务器。感觉服务器这么高端的东西,能会用就不错了,还能写。 不吐槽了,开始了。 这次的作业是搭建一个服务器,要能接收请求,并给浏览器返回正确响应。 项目的下载地址 项目目标:实现一个简易的多线程服务器,可以处理来自浏览器的请求(GET/POST),并做出正确的回应。 请求分以下四种类型: 1. 无参数,文本文件类型 2.

Aaron Yang 2万+

java socket编程自建简易http服务器

一.通讯与协议 通讯就是信息传输的方式,两个人要交流对话是一种通讯方式,打字也是一种传输方式。 那是不是有了传输方式,两个人就能互相理解了呢。如果两个人讲的语言是不同的,比如你讲粤语,对方是个老外。那同样是说话,两个人也无法互相理解。同样,如果你写的是中文,别人只看得懂阿拉伯文,那也是没办法互相理解的。 所以客户端和服务器要传递信息,两者的通讯方式和协议都要一致才能被正确接收和理解 二.htt...

YaoLang1995的博客 653

Java:如何创建轻量级数据库微服务

基于云的Java数据库应用程序的数量每分钟都在增加。 许多组织部署了数百甚至数千个微服务实例。 但是,相对于运行时环境,大多数应用程序会带来惊人数量的不必要开销。 反过来,这会使应用程序运行更慢,运行成本更高。 在本文中,我将演示如何编写比normal(*)小10倍的数据库应用程序。 考虑到应用程序,第三方库和Java运行时,存储要求约为32 MB,而不是通常的(*)〜300 MB。 另...

最佳 Java 编程 749

Java简易多线程HTTP服务器项目实践

HTTP使用的是请求-响应模型。客户端发起请求(Request),服务器返回响应(Response)。每一个HTTP请求都由请求行、请求头、空行(如果存在请求体)和请求体(可选)组成。响应结构类似,由状态行、响应头、空行和响应体组成。请求行包含请求方法(如GET、POST等),请求的URI(统一资源标识符)和HTTP版本。响应状态行包含了HTTP版本、状态码和状态码的文本描述。设计一个简易HTTP服务器时,主要目标是实现一个能够处理基本HTTP请求并返回适当响应的系统。

weixin_42234168的博客 720

简易HTTP服务器开发实战

HTTP(超文本传输协议)服务器是遵循HTTP标准的应用程序,用于响应客户端请求并返回内容。它存储、处理并发送网页或其他数据。服务器通过监听特定的网络端口,响应来自客户端的HTTP请求,提供内容服务。在互联网中,服务器和客户端之间的交互是基于请求-响应模型进行的。客户端(如浏览器或其他应用程序)发送HTTP请求到服务器,服务器处理请求后返回相应的HTTP响应。这一过程涉及到多种网络协议和技术,而HTTP服务器则是这一交互的核心处理单元。理解这一交互模式对于开发HTTP服务器至关重要。

weixin_31459297的博客 684

JAVA编写最简单的服务器

用java编写的最简单的服务器,只能实现最基础的接受请求以及回送响应的功能。

未曾绽放的境界线 471

Java HttpServer_Java项目:简易HTTP服务器类库实现

HTTP协议是互联网上应用最为广泛的网络协议之一,其核心工作模式为请求/响应模型。在这种模式下,客户端发起一个HTTP请求,包含目标资源的标识信息(如URL)和请求头,服务器在接收到请求后,根据请求的内容对资源进行处理,并通过HTTP响应返回给客户端,其中包含状态码、响应头和可能的响应体。Java NIO(New I/O)在JDK 1.4中引入,提供了与传统IO不同的I/O操作方式。NIO核心组件包括通道(Channel)、缓冲区(Buffer)和选择器(Selector)。

weixin_34471637的博客 822

用Java建立一个服务器的5个步骤

1、创建一个ServerSocket对象。ServerSocket Server=new ServerSocket(1001); //端口为10012、服务器无限期地监听。Socket client=Server.accept();3、获取 OutputStream 和 InputStream 对象,使服务器能够通过发送和接收字节与客户进行通信。服务器调用 Socket 的方法,g

Enchanter's Blog 2956

用Java打造简易HTTP静态网页服务器

Java是一种广泛使用的面向对象编程语言,它以“一次编写,到处运行”的理念而闻名。Java被设计为拥有最小化依赖性,可以在多种计算平台上运行,包括服务器、个人电脑、移动设备等。Java的虚拟机(JVM)抽象层允许同一份代码在不同的系统架构上执行。作为一种成熟的编程语言,Java具备强大的标准库,为开发者提供了从基础数据结构到复杂网络和图形界面的丰富支持。HTTP(超文本传输协议)是互联网上应用最为广泛的一种网络协议。

weixin_42518874的博客 684

构建简易HTTP代理服务器的实战教程

在开发HTTP代理服务器时,Python提供了多种网络编程库,其中和模块是两个基础且常用的库。是Python的标准库之一,它提供了一个简单的HTTP服务器框架,非常适合用于创建简单的代理服务器。该模块通过HTTPServer和类来处理HTTP请求和响应。是一个更通用的库,它提供了处理TCP和UDP服务器的框架。它能够创建以不同方式处理请求的服务器类,并且可以轻松地处理请求分派。这两个模块都包含了基础的网络通信功能,并且在实现HTTP代理服务器时可以相互补充。

weixin_31688273的博客 1733

使用Java编写最小Http服务器的设计要点

设计一个仅仅返回一段字符串的最小http服务器有助于理解http协议。对于正规的java程序员,这个程序仅仅用于学习,没有实用价值。对于自动化工程师,小型化的http服务器有着重要的工程意义,因为我们通常不怎么喜欢为了一个简单的页面而去安装Tomcat。   要设计这样一个服务器其实非常简单,只需要掌握一点细节。   1、你需要选择一个监听端口,一般网页服务器使用80或8080

rediculous的专栏 888

openEuler在虚拟机的网络配置

ethernet0.virtualDev 可以配置成其他类型的虚拟网络适配器。常见的选项包括:vlance - 用于模拟 AMD PCnet32 LANCE 网络适配器,支持10Mbps。e1000 - 用于模拟 Intel E1000 千兆网络适配器,支持1Gbps。e1000e - 用于模拟更现代的 Intel E1000e 千兆网络适配器。vmxnet - 用于 VMware 的自定义网络适配器,性能更好但需要安装 VMware Tools。

FHY1221的博客 2933

java 编写简易的http服务器

java 编写简易的http服务器 想要写一个http服务器,首先得了解http协议。这里仅介绍一下相关的知识。 1、http协议 HTTP请求报文 在请求中,HTTP报文由方法、URI、HTTP版本、HTTP首部字段等部分构成。其中方法、URI、HTTP版本作为首行,然后每个HTTP首部字段为一行,以上内容简称为请求头,如下请求头: GET /favicon.ico HTTP/1.1...

一小生,名大白 9104

Matlab图像处理频域滤波实现——高斯低通、高通、带通带阻滤波器

如果你想要进一步了解更多的相关知识,

小嘤熊的博客 1万+

Livox-avia+FAST-LIO麻瓜使用教程

激光雷达 SLAM Fastlio 安装

aaaaaaaaaww12的博客 3677

基于httpserver类实现的简易http服务器

利用Java的`com.sun.net`包下的http类,实现的简易http服务器。全部代码已上传至github,链接在文末。

悲伤无声地涌出来 2647

别再调PID了!用MATLAB/Simulink给四旋翼无人机搭个ADRC控制器(附完整仿真模型)

本文详细介绍了在MATLAB/Simulink环境中为四旋翼无人机搭建ADRC控制器的完整流程,包括核心原理、Simulink建模、参数调试技巧及与PID控制的性能对比。ADRC通过扩张状态观测器(ESO)有效提升无人机在复杂扰动下的控制性能,特别适合四旋翼无人机这类强耦合系统。文章还提供了完整的仿真模型和工程实践问题解决方案。

weixin_26808439的博客 383

实现一个简易的http服务器

准备找工作,把自己以前做的项目做一下整理,回顾一下知识 使用技术 基于Java BIO,多线程,Socket网络编程,xml解析 具备功能 Request封装Http请求报文 Response封装HTTP响应报文 Dispatcher实现分发器功能,进行Servlet的分发 xmlParse解析web.xml文件 支持Get和Post两种请求 文件结构 项目主要是红线框中的内容,其余的部分是自己写服务器之前的一些学习,不影响项目,只是不舍得删除所以留着 HTTPServer 下面只放了重要部分的代码 值得

m0_47574787的博客 831

LVGL8.x 实体按键与Keypad驱动的无缝对接实战

本文详细解析了LVGL8.x中实体按键与Keypad驱动的两种对接方案:坐标映射的Button方式与事件驱动的Keypad方式。重点阐述了如何模块化裁剪lv_port_indev.c模板文件,并深入讲解了Keypad驱动与Group焦点管理系统的核心协作机制,为无触摸屏的嵌入式设备提供流畅的UI交互解决方案。

weixin_29164497的博客 449

Yolov5s可视化网络结构图

Yolov5共有四种网络结构,每种网络深度和宽度上都不相同。 (1) Yolov5s可视化网络结构图:点击查看 (2) Yolov5m可视化网络结构图:点击查看 (3) Yolov5l可视化网络结构图:点击查看 (4) Yolov5x可视化网络结构图:点击查看 ...

江南研习社 15万+

JAVA实现HTTP服务器端

用java socket实现了一个简单的http服务器, 可以处理GET, POST,以及带一个附件的multipart类型的POST。虽然中途遇到了很多问题, 不过通过在论坛和几个高手交流了一下,问题都解决了。如果你觉得程序有些地方看不明白,可以参看这个帖子:http://topic.youkuaiyun.com/u/20090625/22/59a5bfc8-a6b6-445d-9829-ea6d462a4

sunxing007的专栏 7万+

逆向分析-SeparationPreview.aip-分色预览-结构分析(一)-x64dbg条件日志打印-命令表达式-PS脚本

从功能上分析,仅显示使用的专色这个功能,并没有触发插件接口。使用X64dbg加载illustrator进程,切换到句柄窗口,在窗口过程中,右键刷新获取界面。在x64dbg中,在UI中可以输入一些条件表达式,能够计算出对应的值,并打印在日志中。常用的,如果非暂停,输出第一个参数。参数二是utf16的指针,utf16@字符串地址,这里的字符串地址为[[ebp-108]]参数一是utf8的,utf8@字符串地址,这里的字符串地址为[ebp-28]从界面上分析,一个颜色列表,及仅显示专色的多选框组成。

插件开发 647

java平台配置http服务器_java如何实现简单的http服务器

http超文本传输协议(HTTP,HyperText Transfer Protocol)是互联网上应用最为广泛的一种网络协议。所有的WWW文件都必须遵守这个标准。设计HTTP最初的目的是为了提供一种发布和接收HTML页面的方法。1960年美国人Ted Nelson构思了一种通过计算机处理文本信息的方法,并称之为超文本(hypertext),这成为了HTTP超文本传输协议标准架构的发展根基。Ted...

weixin_31558841的博客 658

用Virtuoso和Abstract完成gds2lef

需要用到的工具有virtuoso和abstract。 数模混合的项目通常需要模拟完成模块设计,把接去数字的pin打上label(text),数字的floorplan才能正式开始。 如果只需要简单的数字PR boundary和pin点位置,那么只使用virtuoso就够了,还想把模拟版图都转成lef就要用到abstract工具。 1.PR boundary+pin 1)在virtuoso中打开layout a) Gui操作: Create->P&R Objects->

m0_61544122的博客 8749

SIMATIC S7-1200, S7-1500 PID 控制[手册]

SIMATIC S7-1200, S7-1500 PID 控制[手册]

Java 简单实现HTTP服务器

HTTP服务器   解释: 个人理解,http服务器就是解析http请求信息,并解析信息;然后根据信息做后续事情。   Http请求格式与响应格式      核心代码     package com_2.Httpserver; import java.io.BufferedReader; import java.io.IOException; import java.i...

Dachuan 1万+

IMSL CNL 7.0.0 (x86-64)Crack

IMSL CNL 7.0.0 (x86-64)Crack intel的算法库破解文件,这是C++版本的破解文件

上一篇: Java 日看一类(35)之IO包中的ObjectInput接口
下一篇: Java 日看一类(36)之IO包中的ObjectInputVaildation接口和ObjectOutput接口
wyf95278
博客等级 码龄10年 38粉丝 71原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值