JAVA编写的一个简单的Socket实现的HTTP响应服务器,看后就很容易理解Web服务器的原理了。

package test.io;import java.net.*;
import java.io.*;/*** 一个简单的Socket实现的HTTP响应服务器。<br>* 只用于熟悉HTTP协议的目的,可以看到浏览器发过来的数据格式。* * @author  */
public class MyWebServer {public static void main(String[] args) {Socket socket = null;try {// 创建一个监听8000端口的服务器SocketServerSocket 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;}@Overridepublic 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();}}
}

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

  1. JAVA编写的一个简单的计算器

    做的项目里面有一个是计算器的.做得比较简单,只是普通的加减乘除等于小数点负号删除退格等,其他功能如科学计算.进制转换,其实难度也不大,就是懒得去弄那些.整个程序可以说是自己独立完成的吧,因为没什么花哨 ...

  2. java走马灯_用java编写的一个简单走马灯程序

    实验的时候要求做一个走马灯程序,写完顺便发上来填补下博客的空白,日后有空还会发更多自己编写的程序,让大家指教指教-- package clock; import java.awt.*; import ...

  3. rust服务器配置文件,使用Rust编写一个简单的Socket服务器(1):Rust下的配置载入...

    前言 早在2020年12月的时候,那会儿我正在看The Rust Programming Language.而这本书最后的"结业"任务是要编写一个简单的Socket服务器,而于此同 ...

  4. JAVA同时输入用户名和密码_用java模拟设计一个简单的“用户注册”程序。当用户输入用户名和密码时,单击“注...

    用java模拟设计一个简单的"用户注册"程序.当用户输入用户名和密码时,单击"注 2020 - 9 - 26 TAG : 所有功能均已实现,如有不满意的地方我再修改imp ...

  5. php运行socket服务器,PHP_php简单socket服务器客户端代码实例,本篇文章分享一个简单的socket - phpStudy...

    php简单socket服务器客户端代码实例 本篇文章分享一个简单的socket示例,用php.实现一个接收输入字符串,处理并返回这个字符串到客户端的TCP服务. 产生一个 socket 服务端 /*文 ...

  6. java计算器如何实现运算_用java编写了一个模拟计算器的界面设计,怎么实现运算功能呢...

    用java编写了一个模拟计算器的界面设计,怎么实现运算功能呢 2020 - 9 - 16 TAG : view sourceprint?import java.awt.BorderLayout; im ...

  7. 用java设计实现一个简单的动作冒险类游戏

    用java设计实现一个简单的动作冒险类游戏 1.背景 这是java老师布置的本周作业,具体题目截图如下 2.分析 在UML图已经给出的前提下,此作业很容易.自己在此基础上,加了个简单的界面设计和玩家设 ...

  8. java设计游戏_用java设计实现一个简单的动作冒险类游戏

    用java设计实现一个简单的动作冒险类游戏 1.背景 这是java老师布置的本周作业,具体题目截图如下 2.分析 在UML图已经给出的前提下,此作业很容易.自己在此基础上,加了个简单的界面设计和玩家设 ...

  9. java Swing 做一个简单的输入文本框

    java Swing做一个简单的文本输入框, 新建一个SwingDemo类: // //java swing做一个简单的文本框 //Created by lee_1310 on 2019.03.29 ...

最新文章

  1. keras 张量切片
  2. 【华为云技术分享】浅谈服务化和微服务化(上)
  3. 关于h264bitstream的bug修正及完善
  4. mysql odbc连接池_Java Mysql连接池配置和案例分析--超时异常和处理
  5. 如何查看自己在CSDN积分
  6. hal linux 手册_Linux服务之:haldaemon服务 | 旺旺知识库
  7. php 输出git fetch,git fetch
  8. 看了这个教程,学会快速找出三等分点
  9. 基于JAVA的即时通信软件
  10. java attachment_Java 接收邮件(接收多附件)
  11. katana工程搭建以及模型相机的导入
  12. 我用 Python 分析1585家电商车厘子销售数据,发现这些秘密
  13. 关于面试“有戏”和“没戏”的信号
  14. c语言位数组如何实现,C语言实现位数组(bit数组)与位数组的简单应用举例
  15. APP被苹果APPStore拒绝的各种原因
  16. BeanUtils.copyProperties的用法
  17. python爬虫爬猎聘网获取多条职责描述中有Linux需求的招聘信息
  18. phpyun模板使用foreach循环
  19. vue-cil 浏览器控制台报错:this._init is not a function
  20. 锂电充电芯片_两节锂电充电IC_防反接充电芯片

热门文章

  1. TYUT-A2专题题解
  2. HDU2013 蟠桃记【递推】
  3. UVA10359 Tiling【大数+递推】
  4. Bailian2734 十进制到八进制(POJ NOI0113-45)【进制】
  5. NUC1196 Sum【水题+数学题】
  6. Java 高阶 —— try/catch
  7. 中英文对照 —— 心理/神经科学
  8. Python 数据结构与算法 —— 常见面试题
  9. C/C++ —— 算符优先级的问题
  10. php中的全局异常,tp5 API 自定义全局异常处理(中)