自己动手写个类似iis的服务器?
是的,但是功能肯定没有iis强大。
原理介绍:
1)服务器端监听一个端口;
2)客户端(浏览器)发出请求,比如:输入http://localhost:5555/,回车;
3)服务器端得到请求,返回请求的相应内容,当然了,一定要遵循http协议的格式,要不然那,浏览器是解析不出内容地;
学习程序开发的第一步就是hello,world.
今天咱也来个http server开发的hello world,嘿嘿。
例子如下:
/**
* @author chen
*
*/
public class Myws implements Runnable {
ServerSocket server;
/**
* @throws IOException
* @throws UnknownHostException
*
*/
public Myws() throws UnknownHostException, IOException {
// TODO Auto-generated constructor stub
server = new ServerSocket(5555);
}
/**
* @param args
* @throws IOException
* @throws UnknownHostException
*/
public static void main(String[] args) throws Exception {
// TODO Auto-generated method stub
Thread t=new Thread(new Myws());
t.start();
}
@Override
public void run() {
// TODO Auto-generated method stub
boolean listening=true;
while (listening) {
try {
Socket client=server.accept();
System.out.println("client:"+client);
PrintStream out = new PrintStream(client.getOutputStream(),
true);
String content="<h1>It works.<h1>\r\n";
out.print("HTTP/1.0 202 OK"+"\r\n");
out.print("Server: myserver"+"\r\n");
out.print("Date: "+new Date()+"\r\n");
out.print("Content-length: "+content.length()+"\r\n");
out.print("Content-type: text/html"+"\r\n");
out.print("\r\n");
out.print(content);
out.flush();
out.close();
client.close();
} catch (Exception ex) {
System.out.println(ex.getMessage());
}
}
if(server!=null){
try {
server.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
}
为了突出hello,world的特点,也为了是例子尽量简洁,我是能省就省啊。
代码介绍:
1)构造函数中初始化ServerSocket,使其监听5555端口:
2)当有客户端请求时(不管请求的内容是什么),统统返回一样的内容,内容是通过out.print(String)实现的;
好了,运行吧。
1)启动main();
2)在浏览器输入localhost:5555,回车:
3)OK,it works.
有图为证:
虽然可以运行了,但是实在是太蹩脚了。毕竟只是个hello world.
甚至只能对一个客户端相应,下次会对他进行升级,弄个多线程的。
还要分别对get post请求做不同的响应。
- 大小: 33.9 KB
分享到:
- 2008-12-04 22:02
- 浏览 1107
- 评论(2)
- 论坛回复 / 浏览 (1 / 2300)
- 查看更多
相关推荐
本篇文章将深入探讨如何使用Axis1来创建并运行一个基本的"Hello, World!"示例,帮助初学者理解Web服务的工作原理。 首先,了解SOAP是理解Axis1工作原理的关键。SOAP是一种轻量级的协议,用于在Web上交换结构化的、...
【MPI环境配置到HelloWorld】这篇教程主要针对初次接触MPI并行计算的新手,特别指出在Windows环境下使用VC6.0进行开发。MPI,全称Message Passing Interface,是一种用于并行计算的通信标准,它允许分布式内存的多...
1. 用户访问`http://yourserver/Struts2_HelloWorld/hello`。 2. Struts2的前端控制器(Filter)拦截请求。 3. `struts.xml`中的配置决定将请求路由到`HelloWorldAction`的`execute`方法。 4. `execute`方法执行,...
在本实例中,“Dubbo新手入门实例HelloWorld(zookeeper)”旨在帮助初学者了解如何结合Dubbo和Zookeeper创建一个简单的服务提供者和消费者。首先,我们需要理解这两个关键组件: 1. **Dubbo**: Dubbo的核心功能包括...
- **访问URL**:通过`http://localhost:8080/helloworld/`访问应用。 #### 九、总结 通过这个简单的Hello World示例,我们可以看到Seam框架如何简化了Java Web应用程序的开发过程。从实体定义到页面处理,再到事件...
【标题】"hello的一个war包"是一个专门为初学者设计的Web应用程序压缩包,它遵循了Java Web应用程序的标准打包格式——WAR(Web ARchive)。WAR文件是Java EE平台中的一个重要组成部分,它允许开发者将所有必要的...
【JAVA遇见HTML——JSP篇】是一门适合初学者的课程,主要讲解了Java与HTML在Web开发中的结合,特别是JSP(Java Server Pages)的相关知识。本文将深入解析JSP的基本概念、语法以及核心对象,帮助理解如何利用JSP进行...
本文将详细介绍如何使用Apache CXF框架来实现一个简单的WebService——HelloWorld示例。此示例不仅适用于初学者理解WebService的基本概念,同时也能够帮助开发者快速上手CXF框架。CXF是一个强大的开源框架,用于构建...
首先,Python内置了一个简单的HTTP服务器模块——http.server,它是Python 3.x中的标准库。这个模块提供了一个基础的HTTP服务器,可以用来快速展示静态文件或者进行简单的HTTP服务开发。在命令行中,我们只需要一行...
JSP(JavaServer Pages)是一种基于Java的技术,用于开发动态网页内容。它允许开发者在HTML页面中嵌入Java代码,使得动态内容的生成变得简单。但随着应用复杂度的增加,直接在JSP页面中编写Java代码会使得页面变得...
本文的主旨是通过一个简单的实例——输出“hello world”,来解析Node.js的基础使用方法。通过这个示例,我们可以了解到如何使用Node.js搭建基本的HTTP服务器,并处理简单的GET请求。 首先,Node.js通过require语句...
本文将重点介绍Perfect中的HTTP服务器——Perfect HTTP Server,以及如何使用它来构建基于Swift的HTTP 1.1服务器。 **一、Perfect HTTP Server简介** Perfect HTTP Server是一款基于Swift开发的高性能服务器软件,...
本项目名为"hello_world:node.js主类的作业分配#1",旨在介绍如何通过Node.js创建一个简单的"Hello World" API,该API能够发送问候世界的响应。此API的特点是同时支持HTTP和HTTPS连接,这在确保应用安全性的同时,...
【Spring 实例——helloSpring】 在"helloSpring"这个实例中,我们可以期待看到以下关键部分: 1. **配置文件**:通常为 `applicationContext.xml`,这是 Spring 的配置中心,定义了 beans 及其依赖关系。在这个...
1. **ProtoBuf 定义**:项目中应该包含一个 `.proto` 文件,定义了一个名为 `helloworld` 的服务,其中有一个或多个方法,如 `SayHello`。此外,还会定义一个 `HelloRequest` 和 `HelloReply` 消息类型,分别代表...
EJB3.1 JBoss7.0.2 EclipseJuno-helloworld实现 2013-01-06 02:59:54 分类: Java EJB3.1 JBoss7.1 Eclipse3.7---helloworld实现 一、环境配置: JDK:正常配置 Eclipse:正常下载,解压(V3.7) JBoss:正常下载,...
1. **脚本模式**:编写一个简单的 JavaScript 文件,如 `helloworld.js`,其中包含 `console.log("Hello World");`,然后通过命令行执行 `node helloworld.js`。 2. **交互模式**:直接在命令行中启动 Node.js 的...
这个简单的应用会在访问 `http://your_server_ip:8000/` 时返回 "Hello, world"。 ### 运行Tornado应用 保存文件后,在终端中执行以下命令启动应用: ```bash python app.py ``` 此时,Tornado 应用将在端口 ...
例如,可能会有简单的"Hello, World!" Servlet示例,用于演示如何创建和部署一个基本的Servlet。此外,还可能包含处理HTTP请求的Servlet,例如登录验证、表单数据处理等。在JSP方面,可能会有展示EL(Expression ...
本文将基于给定文件中的描述,详细介绍如何使用XFire框架快速搭建并实现一个简单的Web Service应用——Hello World示例。这不仅有助于理解Web Service的基本概念和工作原理,还能帮助开发者快速上手XFire框架,掌握...