Java Socket编程(五)
2008-05-21 06:33
316 查看
google_ad_client = "pub-8800625213955058";
/* 336x280, 创建于 07-11-21 */
google_ad_slot = "0989131976";
google_ad_width = 336;
google_ad_height = 280;
//
简单的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 " ";
for (int x = 0; x < headerpairs.length; x )
s = headerpairs[x] " ";
return s;
}
}
NameValue类简单地存储了两个字符串:name 和 value.当一个新的对要被加入时,一个新的数组将被分配.新的数组接受了旧的数组和新的成员.旧的数组然后被一个新建的对象覆盖了.
Java Socket编程(一)
Java Socket编程(二)1
Java Socket编程(二)2
Java Socket编程(二)3
Java Socket编程(三)1
Java Socket编程(三)2
Java Socket编程(四)1
Java Socket编程(四)2
Java Socket编程(五)
/* 336x280, 创建于 07-11-21 */
google_ad_slot = "0989131976";
google_ad_width = 336;
google_ad_height = 280;
//
简单的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 " ";
for (int x = 0; x < headerpairs.length; x )
s = headerpairs[x] " ";
return s;
}
}
NameValue类简单地存储了两个字符串:name 和 value.当一个新的对要被加入时,一个新的数组将被分配.新的数组接受了旧的数组和新的成员.旧的数组然后被一个新建的对象覆盖了.
Java Socket编程(一)
Java Socket编程(二)1
Java Socket编程(二)2
Java Socket编程(二)3
Java Socket编程(三)1
Java Socket编程(三)2
Java Socket编程(四)1
Java Socket编程(四)2
Java Socket编程(五)
相关文章推荐
- java socket编程,多线程,客户端服务端
- java socket的网络编程一些小结
- java socket编程——TCP通信
- 多线程Java Socket编程示例
- Java Socket编程 - 基于TCP方式的二进制文件传输
- Java Socket编程(二)-2
- JAVA socket编程(使用BufferedReader的readline()函数读取最后一行等待20S)
- java Socket编程
- java socket 编程经典实例
- Java Socket编程(阻塞多线程,线程池)
- Java Socket 网络编程常见异常
- Java Socket 多线程编程、通信模型及socket协议详解
- Java基础 三步学会Java Socket编程(三)
- Java Socket编程(二) 几种常见的服务器模型
- Netty学习之二--Java socket编程(UDP实例)
- Java socket编程求专家鉴定
- 三步学会Java Socket编程(一)
- java socket 编程
- Java Socket编程(五)NIO
- 多线程Java Socket编程示例