一个简单的Socket实现的HTTP响应服务器(GET/POST/UPLOAD)

package test.io;

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

/**
 * 一个简单的Socket实现的HTTP响应服务器。<br>
 * 只用于熟悉HTTP协议的目的,可以看到浏览器发过来的数据格式。
 * 
 * @author 赵学庆 www.java2000.net
 */
public class MyWebServer {
  public static void main(String[] args) {
    Socket socket = null;
    try {
      // 创建一个监听8000端口的服务器Socket
      ServerSocket s = new ServerSocket(8000, 3);
      System.out.println("MyWebServer等待来自浏览器的连接\n");
      while (true) {
        socket = s.accept();
        System.out.println("连接已建立。端口号:" + socket.getPort());
        new MyWebServerThread(socket).start();
      }
    } catch (IOException e) {
      e.printStackTrace();
    }
  }
}

class MyWebServerThread extends Thread {
  private Socket socket;

  MyWebServerThread(Socket socket) {
    this.socket = socket;
  }

  @Override
  public void run() {
    try {
      InputStreamReader is = new InputStreamReader(socket.getInputStream());
      char[] bs = new char[2048];
      PrintStream out;
      out = new PrintStream(socket.getOutputStream());
      StringBuilder msg = new StringBuilder();
      // 如果10毫秒还没有数据,则视同没有新的数据了。
      // 因为有Keep-Alive的缘故,浏览器可能不主动断开连接的。
      // 实际应用,会根据协议第一行是GET还是 POST确定。
      socket.setSoTimeout(10);
      //
      // 此处读入请求数据并做相应的处理
      //
      int len = -1;
      try {
        while ((len = is.read(bs)) != -1) {
          msg.append(bs, 0, len);
          msg.append("\n");
        }
      } catch (Exception ex) {
        // ex.printStackTrace();
      }
      // 下面是由服务器直接生成的主页内容
      // 1、首先向浏览器输出响应头信息
      out.println("HTTP/1.1 200 OK");
      out.println("Content-Type:text/html;charset:GBK");
      out.println();
      // 2、输出主页信息
      out
          .println("<HTML><BODY>"
              + "<center>"
              + "<H1>HTTP协议测试服务器,当前时间:"
              + new java.util.Date()
              + "</h1>"
              + "<form method='get'>username:<input type='text' name='username'/>password:<input type='text' name='password'/><input type='submit' value='GET测试'/></form><br/>"
              + "<form method='post'>username:<input type='text' name='username'/>password:<input type='text' name='password'/><input type='submit' value='POST测试'/></form><br/>"
              + "<form method='post'  enctype='multipart/form-data'>phototitle:<input type='text' name='phototitle'/>photo:<input type='file' name='photo'/><input type='submit' value='Upload测试'/></form>"
              + "</center>您提交的数据如下:<pre>" + msg.toString() + "</pre></BODY></HTML>");
      out.flush();
      out.close();
      is.close();
      System.out.println("close");
      // 关闭连接
      socket.close();
    } catch (IOException e) {
      e.printStackTrace();
    }
  }
}

 

原文地址:http://www.java2000.net/p9925

libmicrohttpd:轻量级C语言HTTP服务器库的实战指南 HTTP服务器是现代网络应用的核心组件,负责处理客户端请求并返回响应。其工作原理基于事件驱动模型,通过高效复用连接和线程资源来支撑高并发场景,这种设计在物联网、嵌入式系统和微服务架构中具有重要技术价值。libmicrohttpd作为一款轻量级、可嵌入的C语言HTTP服务器库,完美体现了事件驱动与资源最小化原则,它封装了底层协议解析和连接管理,允许开发者专注于业务逻辑实现。该库特别适用于资源受限环境,如嵌入式设备的Web配置接口、桌面应用的内置调试服务器或高性能API网关原型。通过理解其三种线程模式(内部线程 阅读详情

相关推荐

C语言HTTP服务器POST请求体解析:从TCP字节流到表单数据处理

HTTP协议是Web通信的基础,其请求体解析是服务器开发的核心环节。POST请求体数据通过TCP字节流传输,具有流式、异步到达的特性,要求服务器采用状态机模型进行分阶段处理。理解Content-Length、Content-Type等头部字段的解析原理,是实现健壮数据接收的关键。在工程实践中,这涉及动态缓冲区管理、内存安全以及多种数据格式(如application/x-www-form-urlencoded、multipart/form-data)的解析策略。掌握这些技术对于构建嵌入式Web接口、深入理解网

weixin_33778544的博客 401

java httpserver 监听,用ServerSocket接收Http请求解决办法

Java codeimport java.net.Socket;import java.net.ServerSocket;import java.net.InetAddress;import java.io.InputStream;import java.io.OutputStream;import java.io.IOException;import java.io.File;public cl...

weixin_39960147的博客 693

Python网络攻防基础:从HTTP协议解析到代理拦截实战

HTTP/HTTPS协议是Web应用通信的基石,理解其报文结构和工作原理是网络安全与测试的必备基础。协议定义了客户端与服务器之间请求与响应的标准格式,通过解析原始数据包,可以深入理解会话管理、参数传递等核心机制。掌握协议细节的技术价值在于能够精准识别异常流量、构造测试用例以及分析潜在漏洞。在安全测试、爬虫开发和API调试等应用场景中,对协议的深入理解使得工具不再是黑盒。本文通过Python的socket、http.client和requests库,从底层套接字通信到高级请求处理,逐步演示如何手动构造HTTP

weixin_30635053的博客 499

java socket 短连接 请求 并获取返回

java socket 短连接 ,模拟pos机器与服务器的通讯

lige12的专栏 2540

慢速HTTP攻击原理剖析与Nginx/Apache防护实战

在Web应用安全领域,拒绝服务攻击是常见的威胁形式,其中应用层攻击因其低带宽、高隐蔽性而难以防御。慢速HTTP攻击正是利用HTTP协议规范,通过缓慢发送请求头或请求体,长时间占用服务器连接资源,导致正常服务被阻塞。其技术原理涉及TCP连接管理、HTTP请求处理流程以及服务器并发模型,攻击者通过极低的资源消耗即可实现服务瘫痪,对电商、金融等高并发在线业务构成严重威胁。针对此类攻击,有效的防护需要从协议层面理解其机制,并在Web服务器配置中设置严格的连接超时、请求大小限制以及并发连接控制。例如,通过合理配置Ng

weixin_30897079的博客 350

微信小程序导航栏滑动一定距离后固定到顶部

接上一篇文章的内容,通常在一个页面中部会有一个导航栏查看不同的内容,这篇文章旨在实现在页面下滑的过程中导航栏自动固定到顶部以便我们阅读过程中的切换。 下滑一段距离后自动固定到顶部 首先,思考这个功能应该是怎么实现的: 在页面下滑的过程中,我们希望系统应当能识别下滑了多少距离,当原本的导航栏逐渐被遮住以后(遮住意味着下滑了特定距离),触发这个功能,执行另一种样式,将导航栏固定在页面顶端,同时如果我们将页面往上滑,系统能识别到原来的导航栏能露出来了(即距离顶端的高度小于一个特定的值),这时候又执行最初的样式

Oblivision_Geek的博客 4033

java socket返回_java websocket如何实现消息同步返回 类似http请求数据返回结果

packagecom.eapp.demo;importjava.io.*;importjava.net.ServerSocket;importjava.net.Socket;/*** Created by yiye on 2018/9/28.*/public class ServerDemo{public static void main(String[] args) {ServerSocket ...

weixin_34757565的博客 2459

手把手教你用THS4551搭建全差分放大器电路(附ADC驱动实战)

本文详细介绍了如何使用TI的THS4551全差分放大器搭建高性能ADC驱动电路,涵盖芯片选型、电路配置、PCB布局及实战调试等关键环节。THS4551凭借其优异的共模抑制比和宽电源电压范围,成为驱动16位及以上精度ADC的理想选择,特别适合工业应用场景。

weixin_30338481的博客 283

Java使用Socket实现发送http头并获取响应

2019独角兽企业重金招聘Python工程师标准>>> ...

weixin_34352005的博客 841

2025东三省D题深圳杯数学建模实战解析:基于多模型融合的法医STR混合样本智能识别系统

本文深入解析了2025年东三省数学建模竞赛D题,即深圳杯赛题,聚焦于法医STR混合样本的智能识别挑战。文章系统阐述了构建一个基于多模型融合的智能识别系统的完整流程,涵盖贡献者人数判定、DNA贡献比例估计、个体基因型推断以及STR谱图去噪四大核心步骤。通过融合高斯混合模型、随机森林、非负矩阵分解、小波变换与深度学习等多种技术,并强调特征工程的重要性,为破解法医DNA混合样本分析这一行业难题提供了清晰的数学建模与AI实战思路。

weixin_29050271的博客 392

【成功安装】Ubuntu22.04极简方式安装Nvidia驱动

今天下午安装了实机的Ubuntu,面临在Linux上安装Nvidia的问题,被这个问题困扰了一整个下午,各种报错整的我头大。后来发现了不需要按照传统的方式去Nvidia官网下载,再命令行安装,直接在线安装即可。

清筱明的博客 5346

JAVA编写的一个简单的Socket实现的HTTP响应服务器

资料:当你在浏览器地址输入一个URL后回车会发生什么事情Socket实现的HTTP响应服务器,看后就很容易理解Web服务器的原理了。[java] view plain copypackage test.io;        import java.net.*;    import java.io.*;        /**   * 一个简单的Socket实现的HTTP响应服务器。&lt;br&gt...

thewindkee的博客 1217

即插即用篇 | 手把手教你 YOLOv11 添加注意力机制 | 适用于【检测任务】【分类任务】【分割任务】【关键点任务】| 20+ 种全打通!

即插即用篇 | 手把手教你 YOLOv11 添加注意力机制 | 适用于【检测任务】【分类任务】【分割任务】【关键点任务】| 20+ 种全打通!

Coding... 2835

java 服务器 post响应_一个简单的Socket实现的HTTP响应服务器(GET/POST/UPLOAD)

引用:POST /?username=111&password=222 HTTP/1.1Host: 127.0.0.1:8000User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.2; zh-CN; rv:1.9.0.1) Gecko/2008070208 Firefox/3.0.1Accept: text/html,application/...

weixin_29251337的博客 410

Vite 任意文件读取漏洞复现(CVE-2026-39363)

Vite开发服务器 WebSocket中的fetchModule方法未实施server.fs访问控制,导致攻击者可通过WebSocket连接并读取服务器上的任意文件(CVE-2026-39363)

iSee857的博客 223

YOLO26分割全网首发:CVPR2026 Transformer注意力 | BinaryAttention 1-bit注意力,推理提速100%,超越FlashAttention2

​​​​​​摘要:本研究对Ultralytics YOLO26进行了全面分析,重点阐述了其关键架构改进及其在实时边缘目标检测中的性能基准测试。YOLO26于2025年9月发布,是YOLO系列最新、最先进的成员,专为在边缘及低功耗设备上实现高效、精确且易于部署的目标而构建。本文依次详述了YOLO26的架构创新,包括:移除了分布焦点损失(DFL);采用端到端的无NMS推理;集成了渐进损失(ProgLoss)与小目标感知标签分配(STAL);以及引入了用于稳定收敛的MuSGD优化器。

①答疑群聊服务;②YOLO大模型知识问答系统;③计算机视觉论文生成智能体; 204

Python HTTP服务器底层实现:从Socket到GET/POST请求处理

HTTP协议是Web通信的基石,它定义了客户端与服务器之间请求与响应的标准格式。其工作原理基于TCP连接,通过请求行、头部和正文构成报文,实现资源的获取与提交。理解HTTP底层机制对于Web开发、性能优化和网络编程至关重要,能帮助开发者深入掌握框架原理并处理定制化场景。本文聚焦于使用Python标准库手动实现HTTP服务器,核心内容包括通过socket监听处理网络连接、解析HTTP/1.1协议规范,并重点实现GET与POST请求的完整处理流程。通过实践请求解析、路由分发、响应构建及表单数据处理等关键环节,读

weixin_30571465的博客 493

npm install failed如何办?

上网搜索,说是网络配置不太对。按照如下几步,保证解决问题。在运行npm install指令时,出现如下错误。

xiezhipu的博客 880

Socket实现的HTTP协议查看器(GET/POST/UPLOAD)

本文用于初学者熟悉Http协议的一些细节,特别是常见的GET/POST(Upload)三种表单提交方式的数据格式。原文地址:http://www.java2000.net/p9925代码如下package test.io;import java.net.*;import java.io.*;/** * 一个简单的Socket实现的HTTP响应服务器。 * 只用于熟悉HTTP协议的目的,可以看到浏览

老紫竹的专栏 2862

华为的C语言编程规范.pdf

华为技术有限公司内部技术规范。本规范制定了编写C语言程序的基本原则、规则和建议。从代码的清晰、简洁、可测试、安全、程序效率、可移植各个方面对C语言编程作出了具体指导。

Outlook Express 6 (OE6) for Win7/Win8/Win10

英文版 Outlook Express6.0, 兼容Win7/Win10/WinXP,解压就可用。

NAppGUI网络编程指南:HTTP请求与Cookie管理,几行C代码搞定

**NAppGUI** 是一个用 ANSI-C 编写的跨平台桌面应用 SDK,它的网络编程能力同样令人惊喜。如果你正在寻找用 C 语言实现 HTTP 请求与 Cookie 管理的轻量方案,NAppGUI 的 `inet` 模块就是答案——只需几行代码,就能完成 GET、POST、HTTPS 请求以及 Cookie 的自动保存与读取,完全不用接触繁琐的底层 socket 细节。 [![用NAppG

gitblog_00057的博客 787

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

C++ HTTP客户端实战:使用cpp-httplib高效获取网页源码

HTTP协议作为Web通信的基础,定义了客户端与服务器之间请求与响应的标准格式。其工作原理基于TCP连接,通过请求方法、状态码和头部字段等机制实现资源传输。掌握HTTP客户端开发对于构建网络爬虫、API集成工具和微服务通信组件等技术场景具有重要价值。cpp-httplib作为现代C++网络编程的轻量级解决方案,以其单头文件、零依赖的特性,显著降低了HTTP客户端开发的复杂度。该库支持HTTPS、连接复用、流式传输等核心功能,能够有效处理网页源码获取过程中的编码转换、重定向跟随和超时控制等工程实践问题。通过合

caodaoxi的专栏 563

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

嵌入式轻量级HTTP服务器设计:从ColdFire到现代MCU的移植与优化

HTTP协议作为Web应用的基础,其核心在于客户端与服务器之间的请求-响应模型。在嵌入式系统中,实现HTTP服务器面临资源受限的挑战,需要精简协议栈并优化内存管理。其技术价值在于为物联网设备提供标准化的网络交互接口,无需专用上位机软件即可实现远程监控与配置。通过状态机驱动和分层架构设计,可以在微控制器上构建稳定高效的Web服务。应用场景广泛覆盖工业控制、智能设备管理等领域。本文以经典的ColdFire Lite HTTP Server为例,深入解析其轻量级实现,涵盖**单线程轮询**架构和**Flash文件

weixin_30697239的博客 525
上一篇: 从源代码看ArrayList和Vector的真正区别
下一篇: 多个进程共享同一个socket的个人观点
java2000_test
博客等级 码龄19年 10粉丝 320原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值