JAVA编写的一个简单的Socket实现的HTTP响应服务器
来源:互联网 发布:java中ioc是什么 编辑:程序博客网 时间:2024/05/16 17:23
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端口的服务器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(); } } }
0 0
- JAVA编写的一个简单的Socket实现的HTTP响应服务器
- JAVA编写的一个简单的Socket实现的HTTP响应服务器
- JAVA编写的一个简单的Socket实现的HTTP响应服务器
- JAVA编写的一个简单的Socket实现的HTTP响应服务器进阶版
- 用java socket实现了一个简单的http服务器
- c#编写一个简单的http服务器
- 简单的用 Java Socket 编写的 HTTP 服务器应用,帮助学习HTTP协议
- 简单的用 Java Socket 编写的 HTTP 服务器应用,帮助学习HTTP协议
- python socket 实现的简单http服务器
- python socket 实现的简单http服务器
- java实现简单的HTTP响应
- Java Socket实现一个简单的多线程回显服务器。
- 一个简单的http服务器的实现
- C# 编写的一个简单的 HTTP 服务器
- C# 编写的一个简单的 HTTP 服务器
- 用C编写一个简单的、基本的http服务器
- C#实现一个简单的HTTP服务器
- C#实现一个简单的HTTP服务器
- groovy
- html xmlns="http://www.w3.org/1999/xhtm的解释
- Ceph浅接触
- [InstallShield.12.豪华完全版介绍及破解
- Android的IPC机制Binder
- JAVA编写的一个简单的Socket实现的HTTP响应服务器
- 自动化构建:一致性关键之道
- Java三大框架SSH与MVC的设计模式
- HDU 5882 Balanced Game(其实间接考查了欧拉回路)——2016 ACM/ICPC Asia Regional Qingdao Online
- 深入生产者与消费者模式
- 开博
- li标签、div标签等高度不同,依次排列错乱
- meta标签
- LeetCode 389: Find the Difference 题解