Java Socket编程(五) 简单的WEB服务器

时间:2023-05-23 01:00:04 

文章来源:aspcn 作者:孙雯

简单的WEB服务器

一个简单的WEB服务器将由列表9.2这样构建.当然,还必须要对方法和回应事件进行改进.简单的服务器不会分析和存储请求头.新的WEB服务器将分析和存储请求,为以后的处理作准备.为了达到这个目的,你必须有一个包含HTTP请求的类.

HTTPrequest类

列表9.5列出了一个完整的HTTPrequest类.这个类必须包括一个请求头所需的所有信息.

列表9.5.HTTPrequest类.

import java.io.*;
import java.util.*;
import java.net.*;
import NameValue;
/**
* 这个类有一个HTTP请求的所有信息
*/
public class HTTPrequest
{
public String version;
public String method;
public String file;
public Socket clientSocket;
public DataInputStream inbound;
public NameValue headerpairs[];
/**
* 建立一个这个类的实例
*/
public HTTPrequest()
{
version = null;
method = null;
file = null;
clientSocket = null;
inbound = null;
inbound = null;
headerpairs = new NameValue[0];
}
/**
* 加入一个名称/值对到核心数组
*/
public void addNameValue(String name, String value)
{
try
{
NameValue temp[] = new NameValue[ headerpairs.length + 1 ];
System.arraycopy(headerpairs, 0, temp, 0, headerpairs.length);
temp[ headerpairs.length ] = new NameValue(name, value);
headerpairs = temp;
}
catch (NullPointerException npe)
{
System.out.println("NullPointerException while adding name-value:
" + npe);
}
}
/**
* 以字符串的形式归还这个类
*/
public String toString()
{
String s = method + " " + file + " " + version + "\n";
for (int x = 0; x < headerpairs.length; x++ )
s += headerpairs[x] + "\n";
return s;
}
}

NameValue类简单地存储了两个字符串:name 和 value.当一个新的对要被加入时,一个新的数组将被分配.新的数组接受了旧的数组和新的成员.旧的数组然后被一个新建的对象覆盖了.

标签:Ja,av,va,aS,So,oc,ck,ke,et,t编,编程,程(,(五,五),)简,简单,单的,的W,WE,EB,B服,服务,务器,器
0
投稿

猜你喜欢

  • flutter中的布局和响应式app方法示例

    2023-02-19 19:14:52
  • 解决springboot配置logback-spring.xml不起作用问题

    2022-09-10 11:21:24
  • 实现qq中按返回键返回桌面不退出程序的实例

    2022-07-14 16:14:05
  • Linux下执行java程序的方法

    2023-01-25 07:22:23
  • Spring MVC的web.xml配置详解

    2023-08-10 04:45:01
  • 详解Java异常处理中finally子句的运用

    2023-11-29 10:10:30
  • 详解elasticsearch实现基于拼音搜索

    2022-12-06 04:23:04
  • 如何用C#在PC上查找连接蓝牙设备并实现数据传输

    2021-11-04 07:54:42
  • SpringBoot 项目中创建线程池

    2023-09-21 22:12:04
  • SpringBoot异步任务使用方法详解

    2021-08-07 07:57:02
  • C#从windows剪贴板获取并显示文本内容的方法

    2022-06-03 01:56:47
  • Java实现的RSA加密解密算法示例

    2022-05-03 09:20:38
  • android 通过MediaRecorder实现简单的录音示例

    2023-07-29 06:03:54
  • Android仿微信单击拍照长按录像功能实例代码

    2022-01-16 17:45:07
  • SpringMVC中的Model对象用法说明

    2022-12-15 02:24:34
  • 关于线程池你不得不知道的一些设置

    2021-06-08 11:34:45
  • Springboot如何通过yml配置文件为静态成员变量赋值

    2021-08-03 12:03:17
  • Java MyBatis本地缓存原理详解

    2023-01-30 18:20:36
  • 一文了解Java中record和lombok的使用对比

    2022-08-02 06:39:05
  • selenium高效应对Web页面元素刷新的实例讲解

    2022-12-04 08:17:33
  • asp之家 软件编程 m.aspxhome.com