两种方法实现一个简单的web服务器

两种方法实现一个简单的web服务器
两种方法实现一个简单的web服务器

计算机网络报告

实现一个简单的web服务器

实现一个简单的web服务器用Java实现一个简单的web服务器

方法1:

package com.wow.server;

import java.io.File;

import java.io.IOException;

import java.io.InputStream;

import java.io.OutputStream;

import https://www.360docs.net/doc/ea12355296.html,.InetAddress;

import https://www.360docs.net/doc/ea12355296.html,.ServerSocket;

import https://www.360docs.net/doc/ea12355296.html,.Socket;

import https://www.360docs.net/doc/ea12355296.html,.UnknownHostException;

/**

* 一个简单的web应用服务器

*/

public class HttpServer {

public static final String WEB_ROOT = System.getProperty("user.dir") + File.separator + "webroot";

private static final StringSHUTDOWN_COMMAND = "/SHUTDOWN";

private boolean shutdown = false;

public static void main(String[] args) {

HttpServer server = new HttpServer();

server.start();

}

//启动服务器,并接收用户请求进行处理

public void start() {

ServerSocket serverSocket = null;

int PORT = 8080;

try {

serverSocket=newServerSocket(PORT,1, InetAddress.getByName("127.0.0.1"));

} catch (UnknownHostException e) {

e.printStackTrace();

System.exit(-1);

} catch (IOException e) {

e.printStackTrace();

System.exit(-1);

}

//若请求的命令不为SHUTDOWN时,循环处理请求

while(!shutdown) {

Socket socket = null;

InputStream input = null;

OutputStream output = null;

try {

//创建socket进行请求处理

socket = serverSocket.accept();

input = socket.getInputStream();

output = socket.getOutputStream();

//接收请求

Request request = new Request(input);

request.parser();

//处理请求并返回结果

Response response = new Response(output);

response.setRequest(request);

response.sendStaticResource();

//关闭socket

socket.close();

//若请求命令为关闭,则关闭服务器

shutdown=

request.getUri().equals(SHUTDOWN_COMMAND);

} catch (IOException e) {

e.printStackTrace();

continue;

}

}

}

}

该类本身是一个应用程序,包含main方法,直接通过java命令即可运行。在运行时,它本身会启动一个ServerSocket类用于监听服务器的某个端口。当接收到的命令不是停止服务器的SHUTDOWN时,它会创建一个Socket套接字,用于接收请求及返回响应结果。

Request类则用于请求的接收,对于Http协议来讲,通过浏览器向服务器发送请求有一定的格式,其实Request也就是接收这些请求信息,并对其进行分析,抽取出所需的信息,包括cookie、url等。其中http发送的请求包括三部分:

请求方法统一资源标识符协议/版本

请求头

请求实体

其中请求头与请求实体间有一个空行,具体的示例代码如下所示:

GET /index.htm HTTP/1.1

Host: https://www.360docs.net/doc/ea12355296.html,

Connection: keep-alive

User-Agent: Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.11 (KHTML, like Gecko) Chrome/23.0.1271.97 Safari/537.11

Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8 Accept-Encoding: gzip,deflate,sdch

Accept-Language: zh-CN,zh;q=0.8 Accept-Charset: GBK,utf-8;q=0.7,*;q=0.3

Cookie:

BAIDUID=D275C16E04D9BB2CF55FD9B9654AECAC:FG=1; BDREFER=%7Burl%3A%22http%3A//https://www.360docs.net/doc/ea12355296.html,/%22%2Cword %3A%22%22%7D;BDUSS=FJ2SzJxSmpKMW1sdVIwMWw3TTBwaH hZRkxFaUdoeG9QLW5GS2dLTUtyZzNhWUpSQVFBQUFBJCQAAA AAAAAAAAouTQytzfcOemhhb3poZW5nNzc1OAAAAAAAAAAAA AAAAAAAAAAAAACAYIArMAAAALCmJHAAAAAA6p5DAAAA AAAxMC4zNi4xNDcblV A3G5VQd;

BDUT=5b2fD275C16E04D9BB2CF55FD9B9654AECAC138a495329b 1; MCITY=-%3A; shifen[3113720932]=1357565900; H_PS_PSSID=1445_1661

Request类用于接收socket套接字发送过来的字节流,并按照http协议请求

的格式进行解析。对于简单的web服务器而言,我们只需要解析出它的uri即可,这样即可以通过通过文件匹配的方式找到对应的资源。具体的实现代码如下所示:

package com.wow.server;

import java.io.IOException;

import java.io.InputStream;

/**

*接收到的请求串的具体格式如下:

* GET /aaa.htm HTTP/1.1

* Host: 127.0.0.1:8080

* Connection: keep-alive

* User-Agent: Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.11 (KHTML, like Gecko) Chrome/23.0.1271.97 Safari/537.11

* Accept: text/html,application/xhtml+xml,application/xml;q=0.9,q=0.8 * Accept-Encoding: gzip,deflate,sdch

* Accept-Language: zh-CN,zh;q=0.8

* Accept-Charset: GBK,utf-8;q=0.7,*;q=0.3

*

*/

public class Request {

private InputStream input;

private String uri;

public Request(InputStream input) {

this.input = input;

}

public void parser() {

StringBuffer request = new StringBuffer();

byte[] buffer = new byte[2048];

int i = 0;

try {

i = input.read(buffer);

} catch (IOException e) {

e.printStackTrace();

i = -1;

}

for(int k = 0; k < i; k++) {

request.append((char)buffer[k]);

}

uri = parserUri(request.toString());

}

private String parserUri(String requestData) { int index1, index2;

index1 = requestData.indexOf(' ');

if(index1 != -1) {

index2 = requestData.indexOf(' ', index1 + 1);

if(index2 > index1) {

return requestData.substring(index1 + 1, index2);

}

}

return null;

}

public String getUri() {

return uri;

}

}

通过上述代码可以看出parser方法用于解析具体请求,它接收socket的字节流,对其进行处理,获取其中的uri信息。

当获取到uri信息后,即可将uri对应到服务器的某个应用或目录中。本文只是实现了一个简单的静态资源服务器,即将uri对应到某个目录下的文件,若文件存在则打开并读取文件信息; 若不存在则直接返回一段错误信息。Response 类即用于处理该逻辑,同时它会将文件流写回至socket套接字中,由socket套接字将响应结果返回给客户端。

对于http协议而言,响应也是有一定的格式要求的,不能发送任意格式的信息,否则浏览器是无法接收并处理的。Http响应结果也包括三部分:

协议状态码描述

响应头

响应实体段

其中响应头与响应实体段间也是有一个空行的,具体的实例如下所示:HTTP/1.1 200 OK

Date: Mon, 07 Jan 2013 14:31:36 GMT

Server: BWS/1.0

Content-Length: 4029

Content-Type: text/html;charset=gbk

Cache-Control: private Expires: Mon, 07 Jan 2013 14:31:36 GMT

Content-Encoding: gzip

Set-Cookie: H_PS_PSSID=1445_1661; path=/; domain=https://www.360docs.net/doc/ea12355296.html, Connection: Keep-Alive

Response类中当访问请求的文件不存在时,需要发送一段固定的响应文本给客户端,该段响应文档的格式必须严格按照http响应格式进行组织,否则客户端接收不到。具体的实现源码如下所示:

package com.wow.server;

import java.io.File;

import java.io.FileInputStream;

import java.io.IOException;

import java.io.OutputStream;

/**

* 响应结果

*/

public class Response {

private OutputStream output;

private Request request;

private static final int BUFFER_SIZE = 1024;

public Response(OutputStream output) {

this.output = output;

}

public void setRequest(Request request) {

this.request = request;

}

//发送一个静态资源给客户端,若本地服务器有对应的文件则返回,否则返回404页面

public void sendStaticResource() {

byte[] buffer = new byte[BUFFER_SIZE];

int ch;

FileInputStream fis = null;

try {

File file = new File(HttpServer.WEB_ROOT, request.getUri());

if(file.exists()) {

fis = new FileInputStream(file);

ch = fis.read(buffer);

while(ch != -1) {

output.write(buffer, 0, ch);

ch = fis.read(buffer, 0, BUFFER_SIZE);

}

} else {

String errorMessage = "HTTP/1.1 404 File Not Found \r\n" +

"Content-Type: text/html\r\n" +

"Content-Length: 24\r\n" +

"\r\n" +

"

File Not Found!

";

output.write(errorMessage.getBytes());

}

} catch (Exception e) {

System.out.println(e.toString());

} finally {

if(fis != null) {

try {

fis.close();

} catch (IOException e) {

e.printStackTrace();

}

}

}

}

}

方法2:

import java.io.IOException;

import java.io.OutputStream;

import java.io.PrintWriter;

import https://www.360docs.net/doc/ea12355296.html,.Socket;

public class HTTPThread implements Runnable {

private Socket socket;

private int count;

public HTTPThread(){

}

public HTTPThread(Socket socket, int count){ this.socket = socket;

this.count = count;

}

@Override

public void run() {

// TODO Auto-generated method stub

try {

OutputStream os = socket.getOutputStream();

PrintWriter pw = new PrintWriter(os);

pw.println("");

pw.println("");

pw.println("");

pw.println("This my page! You are welcome!");

pw.println("");

pw.println("");

pw.println("");

pw.flush();

pw.close();

os.close();

} catch (IOException e) {

e.printStackTrace();

}

}

}

import java.io.IOException;

import https://www.360docs.net/doc/ea12355296.html,.ServerSocket;

import https://www.360docs.net/doc/ea12355296.html,.Socket;

public class TCPServer {

public static void main(String[] args){

int count = 1;

try {

ServerSocket ss = new ServerSocket(8080);

Socket s = null;

while((s=ss.accept()) != null){

System.out.println("The visitor:" + count);

HTTPThread httpThread = new HTTPThread(s, count);

Thread thread = new Thread(httpThread);

thread.start();

count++;

}

} catch (IOException e) {

e.printStackTrace();

}

}

}

编译运行后,通过浏览器访问http://localhost:8080/就可以了,是不是很神奇呢!用C语言实现一个简单的web编程

#include

#include

#include

#include

#include

#include

#include

#include

#include

#define EOL "\r\n"

#define EOL_SIZE 2

typedef struct {

char *ext;

char *mediatype;

} extn;

//Possible media types

extn extensions[] ={

{"gif", "image/gif" },

{"txt", "text/plain" },

{"jpg", "image/jpg" },

{"jpeg","image/jpeg"},

{"png", "image/png" },

{"ico", "image/ico" },

{"zip", "image/zip" },

{"gz", "image/gz" },

{"tar", "image/tar" },

{"htm", "text/html" },

{"html","text/html" },

{"php", "text/html" },

{"pdf","application/pdf"},

{"zip","application/octet-stream"},

{"rar","application/octet-stream"},

{0,0} };

/*

A helper function

*/

void error(const char *msg) {

perror(msg);

exit(1);

}

/*

A helper function

*/

int get_file_size(int fd) {

struct stat stat_struct;

if (fstat(fd, &stat_struct) == -1)

return (1);

return (int) stat_struct.st_size;

}

/*

A helper function

*/

void send_new(int fd, char *msg) {

int len = strlen(msg);

if (send(fd, msg, len, 0) == -1) {

printf("Error in send\n");

}

}

/*

This function recieves the buffer

until an "End of line(EOL)" byte is recieved

*/

int recv_new(int fd, char *buffer) {

char *p = buffer; // Use of a pointer to the buffer rather than dealing with the buffer directly

int eol_matched = 0; // Use to check whether the recieved byte is matched with the buffer byte or not

while (recv(fd, p, 1, 0) != 0) // Start receiving 1 byte at a time

{

if (*p == EOL[eol_matched]) // if the byte matches with the first eol byte that is '\r'

{

++eol_matched;

if (eol_matched == EOL_SIZE) // if both the bytes matches with the EOL

{

*(p + 1 - EOL_SIZE) = '\0'; // End the string

return (strlen(buffer)); // Return the bytes recieved

}

} else {

eol_matched = 0;

}

p++; // Increment the pointer to receive next byte

}

return (0);

}

/*

A helper function: Returns the

web root location.

*/

char* webroot() {

// open the file "conf" for reading

FILE *in = fopen("conf", "rt");

// read the first line from the file

char buff[1000];

fgets(buff, 1000, in);

// close the stream

fclose(in);

char* nl_ptr = strrchr(buff, '\n');

if (nl_ptr != NULL)

*nl_ptr = '\0';

return strdup(buff);

}

/*

Handles php requests

*/

void php_cgi(char* script_path, int fd) {

send_new(fd, "HTTP/1.1 200 OK\n Server: Web Server in C\n Connection: close\n"); dup2(fd, STDOUT_FILENO);

char script[500];

strcpy(script, "SCRIPT_FILENAME=");

strcat(script, script_path);

putenv("GATEW AY_INTERFACE=CGI/1.1");

putenv(script);

putenv("QUERY_STRING=");

putenv("REQUEST_METHOD=GET");

putenv("REDIRECT_STA TUS=true");

putenv("SERVER_PROTOCOL=HTTP/1.1");

putenv("REMOTE_HOST=127.0.0.1");

execl("/usr/bin/php-cgi", "php-cgi", NULL); }

/*

This function parses the HTTP requests, arrange resource locations,

check for supported media types,

serves files in a web root,

sends the HTTP error codes.

*/

int connection(int fd) {

char request[500], resource[500], *ptr;

int fd1, length;

if (recv_new(fd, request) == 0) {

printf("Recieve Failed\n");

}

printf("%s\n", request);

// Check for a valid browser request

ptr = strstr(request, " HTTP/");

if (ptr == NULL) {

printf("NOT HTTP !\n");

} else {

*ptr = 0;

ptr = NULL;

if (strncmp(request, "GET ", 4) == 0) {

ptr = request + 4;

}

if (ptr == NULL) {

printf("Unknown Request ! \n");

} else {

if (ptr[strlen(ptr) - 1] == '/') {

strcat(ptr, "index.html");

}

strcpy(resource, webroot());

strcat(resource, ptr);

char* s = strchr(ptr, '.');

int i;

for (i = 0; extensions[i].ext != NULL; i++) {

if (strcmp(s + 1, extensions[i].ext) == 0) {

fd1 = open(resource, O_RDONL Y, 0);

printf("Opening \"%s\"\n", resource);

if (fd1 == -1) {

printf("404 File not found Error\n");

send_new(fd, "HTTP/1.1 404 Not Found\r\n");

send_new(fd, "Server : Web Server in C\r\n\r\n");

send_new(fd, "404 Not Found</head>");

send_new(fd, "

404 Not Found: The requested resource could not be found!

");

//Handling php requests

} else if (strcmp(extensions[i].ext, "php") == 0) {

php_cgi(resource, fd);

sleep(1);

close(fd);

exit(1);

} else {

printf("200 OK, Content-Type: %s\n\n",

extensions[i].mediatype);

send_new(fd, "HTTP/1.1 200 OK\r\n");

send_new(fd, "Server : Web Server in C\r\n\r\n");

if (ptr == request + 4) // if it is a GET request

{

if ((length = get_file_size(fd1)) == -1)

printf("Error in getting size !\n");

size_t total_bytes_sent = 0;

ssize_t bytes_sent;

while (total_bytes_sent < length) {

//Zero copy optimization

if ((bytes_sent = sendfile(fd, fd1, 0,

length - total_bytes_sent)) <= 0) {

if (errno == EINTR || errno == EAGAIN) {

continue;

}

perror("sendfile");

return -1;

}

total_bytes_sent += bytes_sent;

}

}

}

break;

}

int size = sizeof(extensions) / sizeof(extensions[0]);

if (i == size - 2) {

printf("415 Unsupported Media Type\n");

send_new(fd, "HTTP/1.1 415 Unsupported Media Type\r\n");

send_new(fd, "Server : Web Server in C\r\n\r\n");

send_new(fd, "415 Unsupported Media Type</head>");

send_new(fd, "

415 Unsupported Media Type!

");

}

}

close(fd);

}

}

shutdown(fd, SHUT_RDWR);

}

int main(int argc, char *argv[]) {

int sockfd, newsockfd, portno, pid;

socklen_t clilen;

struct sockaddr_in serv_addr, cli_addr;

if (argc < 2) {

fprintf(stderr, "ERROR, no port provided\n");

exit(1);

}

sockfd = socket(AF_INET, SOCK_STREAM, 0);

if (sockfd < 0)

error("ERROR opening socket");

bzero((char *) &serv_addr, sizeof(serv_addr));

portno = atoi(argv[1]);

serv_addr.sin_family = AF_INET;

serv_addr.sin_addr.s_addr = INADDR_ANY;

serv_addr.sin_port = htons(portno);

if (bind(sockfd, (struct sockaddr *) &serv_addr, sizeof(serv_addr)) < 0)

error("ERROR on binding");

listen(sockfd, 5);

clilen = sizeof(cli_addr);

/*

Server runs forever, forking off a separate

process for each connection.

*/

while (1) {

newsockfd = accept(sockfd, (struct sockaddr *) &cli_addr, &clilen);

if (newsockfd < 0)

error("ERROR on accept");

pid = fork();

if (pid < 0)

error("ERROR on fork");

if (pid == 0) {

close(sockfd);

connection(newsockfd);

exit(0);

} else

close(newsockfd);

} /* end of while */

close(sockfd);

return 0; /* we never get here */ }

JavaWeb工作原理

[JavaWeb工作原理] [第一章]

一什么是JavaWeb? JavaWeb是用Java技术来解决相关web互联网领域的技术总和。web包括:web服务器和web客户端两部分,在第一个项目(贷款计息查询服务器)的时候已经知道在Web服务器的作用是接受客户端请求,然后向客户端返回一些结果.浏览器的作用是允许用户请求服务器上的某个资源,并且向用户显示请求的结果,HTML用于告诉浏览器怎样向用户显示内容,HTTP是WEB上客户端和服务器之间通信所用的协议 二HTTP协议 Http是一种超文本传输协议(HyperText Transfer Protocol),他是一套计算机在网中通信的一种规则,在TCP/IP体系结构中,HTTP属于应用层协议,位于TCP/IP协议的顶层.HTTP是一种无状态的协议,意思是指在WEB浏览器和WEB服务器之间不需要建立持久的连接,HTTP 定义的事物处理由以下四步组成: 1.客户端和WEB服务器建立连接 a)客户端和服务器的连接就是与客户端与服务器的一个TCP Socket套接字连接 2.客户端发送HTTP请求 a)请求包含:请求行--请求行是一个ACCII文本行,由请求的HTTP方法,请求的 URL,HTTP版本组成,中间用空格分开, b)请求头---HTTP协议使用HTTP头来传递请求的元信息, c)空行---发送回车符和退行,通知服务器以下不再有请求头 d)消息体--HTTP请求中带有查询字符串时,如果是GET方法,查询字符串或表单 数据附加在请求行中,那么消息体就没有内容,如果是POST方法,查询字符串或 表单数据就添加在消息体重 3.服务器端接收客户端的HTTP请求,生成HTTP相应回发 a)响应包含:状态行---每个HTTP响应以一个状态行开头,它由HTTP协议版本, 响应状态码,响应描述组成,中间用空格分开 b)响应头---响应头与请求头一样,也是一个用冒号分隔符的名称/值对,冒号前面 是HTTP头得名称,后面是HTTP头得值 c)空行---发送回车符和退行,通知服务器以下不再有响应头 d)消息体---要发送回客户端的HTML文档或其他要显示的内容等,WEB服务器 把要发送给客户端的文档信息放在消息体中 4.服务器端关闭连接,客户端解析并回发响应,恢复页面 a)HTTP响应到达客户端后,浏览器先解析HTTP响应中的状态行,查看请求是否 成功的状态代码,然后开始一步步解析响应

windowsserver搭建web服务器

WEB服务访问方式 不同IP地址访问。 相同IP地址,不同端口访问。 相同IP地址,相同端口,不同域名访问 试验环境 操作系统IP地址WEB站点端口域名网页目录Server 2012 搭建web服务器,安装IIS角色 1、安装Windows server 2012 操作系统。 2、打开“服务器管理器”——选择“添加角色和功能” 3、安装IIS角色,选择“基于角色或基于功能安装” 4、选择IIS角色, 5、无需选择任何功能,直接默认下一步。 6、角色服务无需选择,可以直接默认下一步。 7、选择“安装”即可。 8、IIS角色已经安装完成。

配置网站服务器 实现不同IP访问的WEB站点 1、点击开始,选择“Internet 信息服务(IIS)管理器” 2、打开IIS控制台,并禁用IIS默认站点。 3、新建网络站点test01。 4、在test01目录下创建测试页,并命名为 5、使用客户端浏览器访问测试。可以正常访问测试页内容。 6、创建第二个网站站点,并命名为test02。 7、在目录test02下面创建测试页。 8、使用客户端浏览器访问测试。 实现不同端口访问的WEB站点 1、创建站点test03,并与站点test01使用相同IP地址。 2、在目录test03下面创建访问测试页。 3、使用客户端访问测试页。(注意关闭Windows防火墙)。

实现不同域名访问的WEB站点 1、创建站点test04,并绑定域名 2、创建新站点并命名为test04。 3、在test04目录下,创建访问测试页。 4、绑定站点test01,的域名为 5、为方便客户端测试验证,修改本地host文件,对进行解析。 6、本地Host文件目录:C:\Windows\System32\drivers\etc 7、使用命令:ipconfig /flushdns 刷新dns缓存 8、使用域名()访问测试页。 9、使用域名()访问test01站点的测试页。 试验成功。

简单Web服务器设计与实现课程设计

计算机网络课程设计报告 题目:简单Web服务器设计与实现 专业: 学号: 学生姓名: 指导教师:

摘要 (2) 关键词 (2) 1. 前言 (3) 1.1 课程设计前准备 (4) 1.2 课程设计的内容 (5) 1.3 课程设计要求 (5) 1.4 课程设计平台 (5) 2. Web服务器的工作原理 (5) 2.1 HTTP协议的作用原理 (5) 2.2 Java开发语言相关知识与技术 (6) 3. 开发环境及套字接编程 (11) 3.1 Web服务器的开发环境 (11) 3.2 Web服务器的套接字编程 (12) 4. WEB服务器的设计与实现 (13) 4.1 Web服务器的程序设计流程 (13) 4.2 用Java实现Web服务器的主要设计步骤及程序 (14) 5. 测试运行 (21) 5.1 调试运行 (21) 6.结束语 (23) 参考文献 (24)

WWW的工作基于客户机/服务器计算模型,由Web 浏览器(客户机)和Web服务器(服务器)构成,两者之间采用超文本传送协议(HTTP)进行通信,HTTP协议的作用原理包括四个步骤:连接,请求,应答,关闭应答。在课程设计中,系统开发平台为Win7,程序设计语言采用Java,程序运行平台为Eclipse。在程序设计中,采用了结构化与面向对象两种解决问题的方法。程序通过调试运行,初步实现了设计目标,并且经过适当完善后,将可以应用在商业中解决实际问题。 关键词Java;HTTP;Web服务器

Internet是目前世界上最大的计算机互联网络,与大家的生活、学习、工作有着越来越密切的关系,它遍布全球,将世界各地各种规模的网络连接成一个整体,其用户群十分庞大,因此,建设一个好的Web站点对于一个机构的发展十分重要。近年来,随着网络用户要求的不断提高及计算机科学的迅速发展,特别是数据库技术在Internet中的广泛应用,Web站点向用户提供的服务将越来越丰富,越来越人性化。 本课程设计主要解决由Web 浏览器(客户机)和Web服务器(服务器)构成,两者之间采用超文本传送协议(HTTP)进行通信的Web服务器的程序设计。 1.1 课程设计前准备 以下的工作均是建立在大量的调查基础上的,是Web服务器开发前期准备工作所解决的问题。 (1)Java简介 Java是由sun公司开发的一种新型的面向对象的程序设计语言,主要用于web页面的设计[1]。Java语言的流行除了因为它能够编制嵌入HTML文件中的Applet外,还在于Java语言本身的面向对象、简单、平台无关性、安全性、多线程等特点。Java语言的发展颇具传奇性,它与Internet的WWW的迅猛发展是分不开的。由于其发展迅速,有人将它比喻为Internet上的世界语。前面讲到在Internet上Web页面的设计采用的是HTML语言,用户借助于Web浏览器(如Netscape,HotJava,IE等),可以访问到远程web服务器上静态的、具有超链接的Web页面[2]。 (2)HTTP协议简介 HTTP 协议是应用层的协议,定义了服务器端和客户端之间文件传输的沟通方式。HTTP协议用于从WWW服务器传输超文本到本地浏览器的传送协议。由于HTTP协议支持的服务不限于WWW,还可以是其它服务,它允许用户在统一的界面下,采用不同的协议访问不同的服务。它可以使浏览器更加高效,使网络传输减少。它不仅保证计算机正确快速地传输超文本文档,还确定传输文档中的哪一部分,以及哪部分内容首先显示等[3]。

嵌入式web服务器搭建讲解

Web服务器创建 随着计算机技术的发展,嵌入式系统已成为计算机领域的一个重要组成部分。广义讲,凡是带有微处理器的专用软硬件系统都可以称为嵌入式系统。所谓嵌入式设备,是指具有计算机功能,但又不称为计算机的设备或器材,几乎包括了我们周期的所有电路设备:PDA、手机机顶盒、汽车、微波炉、电梯、安全系统、自动售货机、医疗仪器、自动取款机等。嵌入式系统可以通过各种无线形式(如WAP、Blue嵌入式Internet技术主要包括传感器技术、通信技术、计算机技术和集成电路技术等。以前的设备控制系统一般是通过专用通信线中进行的,其通信介质、通信协议、相关软件和硬件都是专用的,而Internet技术的发展使嵌入式设备的远程控制和管理方式有了改变。不需要专用的通信线路,并且传输的信息不局局于数据信号,还有声音和图像。最重要的是其通信协议是标准且公开的。随着Web技术的发展,几乎改变了现在的信息表达形式,很多应用都是基于Web 技术的。由于HTML语言的标准统一性,只要在嵌入式设备中有一个微型服务器, 就可以使用任意一种Web浏览器接收和发送信息。所以如何设计这种特别的Web服务器,如何在嵌入式设备中安装Web服务器,就成了嵌入式Web服务器的发展和研究方向。 对于嵌入式Web服务器的研究和应用,其意义是重大的。它为我们管理、控制和监测各种各样设备提供了一个很好的途径。这种设备可以是具有有限内存资源的8位或16位系统,已足够提供一个用户界面,而且这种方式是基于Internet 的。这种设备可以在世界任何一个地方,只要它连入Internet就能够控制它。 1.1 课题的研究意义 Internet的迅猛发展,传统的Client/server体系结构(客户机/服务器),渐渐的在某些方面显示出它的局限性,Browser/server结构(浏览器/服务器)的出现恰恰弥补了这种缺陷。B/S方式已成为一种时尚,大部分网络应用系统都是以这种B/S方式与网络用户交换信息。B/S的基础是客户端要有一个浏览器程序,服务器端要有一个与之对应的Web服务器。显然,Web服务器在B/S方式下起着决定性的作用,因此,一般互联网站都采用功能强大的通用Web服务器。 随着网络各个核心部分业务量的提高,其访问量和数据流量快速增长,处理能力和计算强度也相应增大,使得单一设备根本无法承担,而且许多企业级应用系统的应用请求具有突发性和紧急性的特点,当应用访问急剧上升时,容易造成网络瓶颈。解决这一问题的办法是采用多台嵌入式Web服务器为一个应用服务,集群负载均衡机制就是为解决多个网络设备之间实现合理的业务量分配而提出

java web 工作原理总结

总结 第一章java web 工作原理 1.1、web应用程序有web服务器,web客服端浏览器,HTTP协议以及静态HTML文件。 Web服务器的作用是接受客服端请求,然后向客服端返回些结果;浏览器的作用是允许用户请求服务器上的某个资源,并且向用户显示请求的结果; HTML是用于告诉浏览器怎么样向用户显示内容; HTTP是web上客服端和服务器之间通信所用的协议。 1.1.2 HTTP协议将来自于客服端的请求信息封装成HTTP请求; 封装的信息当中包括请求行、请求头、消息体、分隔请求头、消息体的一个空行。 请求行是一个ASCII文本行,由三个标记组成:请求的HTTP方法、请求的URL、HTTP版本;中间用空格分开例如: GET /lovobook/index.html HTTP/1.0 在HTTP1.1版本中请求方法有八种分别是下面: GET:用于向服务器检索资源在HTTP请求头 POST:用于向服务器发送资源,并要求指定的URI处理在消息体HEAD:于GET方法相同,服务器只返回状态行和头标,并不返回请求文档。 PUT:请求服务器保持请求数据作为指定的URI新内容;

DELETE:请求服务器删除URI中命名的资源; OPTIONS:请求关于服务器支持的请求方法信息; TRACE:请求web服务器反馈HTTP请求和其头标;CONNECT:已文档化但当前未实现的一个方法,预留做隧道处理;请求头: HTTP协议使用HTTP头来传递请求的元信息。HTTP头是一个用冒号分隔的名称/值对,冒号前面是HTTP头的名称,后面是HTTP头的值。 1.1.3 HTTP响应包括:状态行、响应头、消息体、分割消息头、响应头。状态行里面出现: 1XX:表示信息,请求收到,继续处理。 2XX:表示成功 3XX:表示重定向 4XX:表示客服端错误 5XX:表示服务器错误 1.2 Web服务器的缺陷是只能向用户提供静态网页内容。 1.3 服务器端网页编程就是web服务器创建动态服务器端内容的过程。 1.3.1 服务器端网页编程出现得最早的技术就是CGI,它的缺点就是每次请求一个CGI资源,将在服务器上创建一个新的进程,并且通过标准输

一个Web服务器的设计与实现 - 副本

兰州商学院 本科生毕业论文(设计) 论文(设计)题目:一个人web服务器的设计与实现学院、系:信息工程学院 计算机科学与技术系 专业 (方向):计算机科学与技术 年级、班:2008级2班 学生姓名:毛显淇 指导教师:李兵 _______年月日

声明 本人郑重声明:所呈交的毕业论文(设计)是本人在导师的指导下取得的成果。对本论文(设计)的研究做出重要贡献的个人和集体,均已在文中以明确方式标明。因本毕业论文(设计)引起的法律结果完全由本人承担。 本毕业论文(设计)成果归兰州商学院所有。 特此声明 毕业论文(设计)作者签名: 年月日

摘要 WWW的工作基于客户机/服务器计算模型,由Web 浏览器(客户机)和Web服务器(服务器)构成,两者之间采用超文本传送协议(HTTP)进行通信,HTTP协议的作用原理包括四个步骤:连接,请求,应答,关闭应答。在课程设计中,系统开发平台为Win7,程序设计语言采用Java,程序运行平台为Eclipse。在程序设计中,采用了结构化与面向对象两种解决问题的方法。程序通过调试运行,初步实现了设计目标,并且经过适当完善后,将可以应用在商业中解决实际问题。 关键词Java;HTTP;Web服务器

ABSTRACT WWW's work is based on client / server computing model, by the Web browsing (client) and Web server (server) constitute the Hypertext Transfer Protocol (HTTP) to communicate between the role of principle of the HTTP protocol, including foursteps: connect, request, response, closes the response. In curriculum design, system development platform for Win7, programming language using the Java program is running platform for the Eclipse. In program design, the use of structured and object-oriented two solutions to the problem. Program through the debugger to run, the initial realization of the design objectives, and properly perfect will can be applied in business to solve practical problems. Keywords Java; HTTP; the Web server

Web服务器的工作原理

Web服务器工作原理概述 很多时候我们都想知道,web容器或web服务器(比如Tomcat或者jboss)是怎样工作的?它们是怎样处理来自全世界的http请求的?它们在幕后做了什么动作?Java Servlet API(例如ServletContext,ServletRequest,ServletResponse和Session这些类)在其中扮演了什么角色?这些都是web应用开发者或者想成为web应用开发者的人必须要知道的重要问题或概念。在这篇文章里,我将会尽量给出以上某些问题的答案。 请集中精神! 文章章节: ?什么是web服务器、应用服务器和web容器? ?什么是Servlet?他们有什么作用? ?什么是ServletContext?它由谁创建? ?ServletRequest和ServletResponse从哪里进入生命周期? ?如何管理Session?知道cookie吗? ?如何确保线程安全? 什么是web服务器,应用服务器和web容器? 我先讨论web服务器和应用服务器。让我在用一句话大概讲讲: “在过去它们是有区别的,但是这两个不同的分类慢慢地合并了,而如今在大多在情况下和使用中可以把它们看成一个整体。” 在Mosaic浏览器(通常被认为是第一个图形化的web浏览器)和超链接内容的初期,演变出了“web服务器”的新概念,它通过HTTP协议来提供静态页面内容和图片服务。在

那个时候,大多数内容都是静态的,并且HTTP 1.0只是一种传送文件的方式。但在不久后web服务器提供了CGI功能。这意味着我们可以为每个web请求启动一个进程来产生动态内容。现在,HTTP协议已经很成熟了并且web服务器变得更加复杂,拥有了像缓存、安全和session管理这些附加功能。随着技术的进一步成熟,我们从Kiva和NetDynamics学会了公司专属的基于Java的服务器端技术。这些技术最终全都融入到我们今天依然在大多数应用开发里使用的JSP中。 以上是关于web服务器的。现在我们来讨论应用服务器。 在同一时期,应用服务器已经存在并发展很长一段时间了。一些公司为Unix开发了Tuxedo(面向事务的中间件)、TopEnd、Encina等产品,这些产品都是从类似IMS和CICS的主机应用管理和监控环境衍生而来的。大部分的这些产品都指定了“封闭的”产品专用通信协议来互连胖客户机(“fat”client)和服务器。在90年代,这些传统的应用服

Windows下C++实现WEB服务器

https://www.360docs.net/doc/ea12355296.html,/topic/368943 自己研究了好几天终于写出来一个,哈哈,当然也从网上得到了很多的帮助拉。谢谢大家咯!这个版本还不是很完善,但Web服务器的基本框架已经出来了,还有部分的功能需要进行进一步的测试和修改。虽然说C的开发比较慢,对于程序员来说比较难以操作,但通过用C写这些很底层的东西,可以更好的了解的象java的socket中的工作原理。有一定的帮助! 以下是源代码: #include #include #include using namespace std; #define SERVER_PORT 10000 //自定义的服务端口 #define HOSTLEN 256 //主机名长度 #define BACKLOG 10 //同时等待的连接个数 int sendall(int s, char *buf, int *len) { int total = 0; // 已经发送字节数 int bytesleft = *len; //还剩余多少字节 int n; while(total < *len) { n = send(s, buf+total, bytesleft, 0); if (n == -1) { break; } total += n; bytesleft -= n; } *len = total; // 返回实际发送出去的字节数 return n==-1?-1:0; // 成功发送返回0 失败-1 } void wrong_req(int sock) { char* error_head = "HTTP/1.0 501 Not Implemented\r\n"; //输出501错误 int len = strlen(error_head); if (sendall(sock, error_head, &len) == -1) { //向客户发送 printf("Sending failed!"); return; } char* error_type = "Content-type: text/plain\r\n"; len = strlen(error_type); if (sendall(sock, error_type, &len) == -1) { printf("Sending failed!");

一次访问Web服务器的详细通信过程

一次访问Web服务器的详细通信过程 在这一讲中我们要了解一下Internet中一台计算机访问Web服务器的全部过程,从中可以窥探Internet是如何工作的,本讲中会涉及到网络(或Internet)的专业术语、概念及Internet的重要内容,在以后的讲座中我们会详细讲解。本讲主要是想让大家明网络是怎样交付数据、寻址等,即Internet的基本工作原理。 一、网络环境说明 图一 本次网络通信试验采用Packet Tracer 5.0思科网络模拟软件。有关Packet Tracer 5.0的使用与技巧请参考我的相关博文。此次模拟环境中使用5个路由器连接两个以太网,其中192.168.2.0/24网段为服务器,192.168.2.1为DNS服务器,192.168.2.2为Web服务器,域名为https://www.360docs.net/doc/ea12355296.html,,192.168.2.3为TFTP服务器,192.168.1.0/24网段为Client PC,其网关为192.168.1.254。每个路由器使用RIP路由协议发现路由。 二、PC0(IP地址为192.168.1.1)访问https://www.360docs.net/doc/ea12355296.html,的过程详解 1、把域名https://www.360docs.net/doc/ea12355296.html,解析为IP地址,这就要使用DNS协议,向DNS服务器查询域为https://www.360docs.net/doc/ea12355296.html,的IP地址。 a、PC0组装成一个DNS数据包,该数据包包含了一条查询域名为https://www.360docs.net/doc/ea12355296.html,的IP是多少的问题,然后再把该DNS数据包加上一个UDP报头,在UDP报头的目的端口为53,源端口随机选择,把UDP 数据报交给IP层,加上目的地址即DNS服务器的IP地址:192.168.2.1,源地址为本机IP地址,IP数据包交给网络接口层(也可以理解为数据链路层)准备发给本网段网关,由网络转发出去。在网络接口层又封闭为数据帧,帧头的源MAC地址为本机网卡MAC地址,目的地址应该为网关的MAC地址,但此时PC0并

课程设计 简单web服务器的设计与实现 uml设计

简单web服务器的设计与实现 一、设计内容及设计要求 WWW的工作基于客户机/服务器计算模型,由Web 浏览器(客户机)和Web服务器(服务器)构成,两者之间采用超文本传送协议(HTTP)进行通信,HTTP协议 的作用原理包括四个步骤:连接,请求,应答,关闭应答。 设计内容 Web服务器是web中的关键部件,设计一个简单的Web服务器,为用户提供简单的信息服务。 设计要求 本实验要求完成一个简单的web服务器的设计与实现,能够通过HTTP Get 命令获得一个简单的HTML文件。 设计目的 通过web服务器的设计与实现,可以达到以下目的:掌握网络编程的知识与技能;掌握HTTP协议的相关知识;熟悉网络软件的开发过程,锻炼解决实际问题的能力。 二、总体设计 HTTP协议的作用原理包括四个步骤: 连接:Web浏览器与Web服务器建立连接,打开一个称为socket(套接字)的虚拟文件,此文件的建立标志着连接建立成功。 请求:Web浏览器通过socket向Web服务器提交请求。HTTP的请求一般是GET或POST命令(POST用于FORM参数的传递)。GET命令的格式为:GET 路径 /文件名HTTP/1.0 文件名指出所访问的文件,HTTP/1.0指出Web浏览器使用的 HTTP版本。 应答:Web浏览器提交请求后,通过HTTP协议传送给Web服务器。Web服务器接到后,进行事务处理,处理结果又通过HTTP传回给Web浏览器,从而在 Web浏览器上显示出所请求的页面。 关闭连接:当应答结束后,Web浏览器与Web服务器必须断开,以保证其它Web浏览器能够与Web服务器建立连接。

web服务器apache架构与原理

web服务器apache架构与原理 web服务器 在开始了解Apache前,我们先熟悉一下web服务器,因为apache也是web服务器的一种。 Web系统由客户端(浏览器)和服务器端两部分组成。Web系统架构也被称为B/S架构。最常见的Web服务器有Apache、IIS等,常用的浏览器有IE、Firefox、chrome等。当你想访问一个网页时,需要在浏览器的地址栏中输入该网页的URL(Uniform Resource Locator,简称为URL)地址,或者是通过超链接链接到该网页。浏览器会向该网页所在的服务器发送一个HTTP请求,服务器会对接收到的请求信息进行处理,然后将处理的结果返回给浏览器,最终将浏览器处理后的结果呈现给用户。 web服务器端的工作流程: (1)客户端发送请求 客户端(通过浏览器)和Web服务器建立TCP连接,连接建立以后,向Web服务器发出访问请求(如get)。根据HTTP协议,该请求中包含了客户端的IP地址、浏览器的类型和请求的URL等一系列信息。 (2)服务器解析请求 Web服务器对请求按照HTTP协议进行解码来确定进一步的动作,设计的内容有三鼐要点:方法(GET)、文档(/sample.html)、和浏览器使用的协议(HTTP/1.1)其中方法告诉服务器应完动的动作,GET方法的含义很明显是:服务器应定位、读取文件并将它返回给客户。 Web服务器软件现在就知道了,它应该找到文件/sample.html,并使用HTTP/1.1协议将内存返回给客户。信息是经过与请求到来相同的连接发出的,所以服务器不需要定们客户或创建新的连接。 (3)读取其它信息(非必须步骤)

基于Java的Web服务器工作原理1

基于Java的Web服务器工作原理1基于Java的Web服务器工作原理1 一个Web服务器也被称为HTTP服务器,它通过HTTP协议与客户端通信。 这个客户端通常指的是Web浏览器。一个基于Java的Web服务器用到二个重要的类,https://www.360docs.net/doc/ea12355296.html,.Socket与https://www.360docs.net/doc/ea12355296.html,.ServerSocket,并通过HTTP消息通信。 因此,本文从讨论HTTP与这二个类开始,然后我将解释一个与本文相关的简单的Web应用。 The Hypertext Transfer Protocol(HTTP) HTTP是一种让Web服务器与浏览器(客户端)通过Internet发送与接收数 据的协议。它是一个请求、响应协议--客户端发出一个请求,服务器响应这个 请求。HTTP运用可靠的TCP连接,通常用的TCP 80端口。它的第一个版本是HTTP/0.9,然后被HTTP/1.0取代。当前的版本是HTTP/1.1,由RFC2616(.pdf)定义。 本节主要对应HTTP 1.1,足够使你充分理解由Web服务器程序发出的消息。如果你对更加详细的知识有兴趣,可以参考RFC2616。 在HTTP中,客户端总是通过建立一个连接与发送一个HTTP请求来发起一 个事务。服务器不能主动去与客户端联系,也不能给客户端发出一个回叫连接。客户端与服务器端都可以提前中断一个连接。例如,当用一个浏览器下载一个 文件时,你可以通过点击"停止"键来中断文件的下载,关闭与服务器的HTTP连接。 HTTP请求 一个HTTP请求包含三个部分: Method-URI-Protocol/Version方法-地址-版本 Request header请求头

个人搭建Web服务器实战

个人搭建Web 服务器网站实战笔记(by lixl ) 1 目标综述 此前(5年前吧?),曾经用NetBox2.8进行过Web 服务器的实验,当时主页可在局域网上被访问,但从未进行过Internet 上的实验;具体收获也没做什么笔记;当时的IIS 需要另外安装,IIS 方式的服务试验过,但后不了了之; 如今,进入了Win7时代;得知Win7自带Web 服务功能,于是突然来了兴致,想试一试此项功能;且本人目前条件跟当年比也不那么寒酸了,家中有10M 光纤宽带加各种路由器,N 台闲置本本,ect ,遂准备来一次完整的实验,以对网页制作、DDNS 域名解析、Win7的Internet 服务器搭建以及网络编程进行一下完整的了解; 参考了一些技术资料,最终完成了上述实验,作此笔记以籍收获; 2 域名注册 最终选择了花生壳动态域名解析器作为域名解析中介,所幸注册到了一个https://www.360docs.net/doc/ea12355296.html, 的顶级域名,大喜之余顺势也要了它的”https://www.360docs.net/doc/ea12355296.html, ”子域名(也不差那100多块钱了);两个域名加其他服务订购2年共花费了500元,不算贵吧? 注册时选完套餐,用支付宝直接付款;1小时后可设置解析参数,合同生效,24小时内花生壳完成其Internet 登记及路由发布; 3 测试主页的制作 写了一个极其简单的HTML 网页,源码: 服务器测试页面 测试页面…… ===朝发白帝城=== 朝辞白帝彩云间, 千里江陵一日还。 两岸猿声啼不住, 轻舟已过万重山。 ---------------- 跳转至百度导航 F o l l o w M e !

简单Web服务器设计与实现课程设计

琼州学院电子信息工程学院 课程设计报告 课程名称:计算机网络 设计题目:简单web服务器设计与实现 专业:软件工程 学生姓名:王永浩(11241056)、宋雨(11241060) 夏成鹏(11241066)、黄兵周(11241007)指导教师:陈德祥 日期: 2014年4月6日

目录 摘要 ..................................................................................................................................... - 2 -1前言 .................................................................................................................................. - 2 -1.1 课程设计前准备 ............................................................................................................ - 2 -1.2课程设计的内容........................................................................................................... - 3 -1.3课程设计要求 ............................................................................................................... - 3 - 1.4课程设计平台 ............................................................................................................... - 3 - 2 Web服务器的工作原理.................................................................................................... - 4 -2.1HTTP协议的作用原理................................................................................................. - 4 -2.2J AVA开发语言相关知识与技术 .................................................................................. - 5 -2.2.1 java中的多线程及实现: ....................................................................................... - 5 -2.2.2 I/O字节流操作...................................................................................................... - 7 -2.2. 3 网络架构: ............................................................................................................... - 9 -3开发环境及套字接编程 .................................................................................................. - 10 -3.1W EB服务器的开发环境............................................................................................. - 10 -3.2W EB服务器的套接字编程......................................................................................... - 11 - 3.2.1 ServerSocket类....................................................................................................... - 11 - 4 WEB服务器的设计与实现 ............................................................................................ - 12 -4.1W EB服务器的程序设计流程..................................................................................... - 12 -4.2用J AVA实现W EB服务器的主要设计步骤及程序................................................ - 13 -5测试运行 .......................................................................................................................... - 20 -5.1调试运行 ..................................................................................................................... - 20 -结束语 ................................................................................................................................. - 21 -参考文献 ............................................................................................................................. - 22 -

C 实现简单WEB服务器

C 实现简单WEB服务器 作者:与时俱进发表于2010-07-22 09:59原文链接阅读:40评论:0 一、HTTP协议的作用原理 WWW是以Internet作为传输媒介的一个应用系统,WWW网上最基本的传输单位是Web网页。WWW的工作基于客户机/服务器计算模型,由Web浏览器(客户机)和Web服务器(服务器)构成,两者之间采用超文本传送协议(HTTP)进行通信。HTTP协议是基于TCP/IP协议之上的协议,是Web浏览器和Web服务器之间的应用层协议,是通用的、无状态的、面向对象的协议。HTTP协议的作用原理包括四个步骤: 连接:Web浏览器与Web服务器建立连接,打开一个称为socket(套接字)的虚拟文件,此文件的建立标志着连接建立成功。 请求:Web浏览器通过socket向Web服务器提交请求。HTTP的请求一般是GET或POST命令(POST用于FORM参数的传递)。GET命令的格式为: GET路径/文件名HTTP/1.0 文件名指出所访问的文件,HTTP/1.0指出Web浏览器使用的HTTP版本。 应答:Web浏览器提交请求后,通过HTTP协议传送给Web服务器。Web服务器接到后,进行事务处理,处理结果又通过HTTP传回给Web浏览器,从而在Web浏览器上显示出所请求的页面。 例:假设客户机与https://www.360docs.net/doc/ea12355296.html,:8080/mydir/index.html建立了连接,就会发送GET命令:GET/mydir/index.html HTTP/1.0。主机名为https://www.360docs.net/doc/ea12355296.html,的Web服务器从它的文档空间中搜索子目录mydir的文件index.html。如果找到该文件,Web服务器把该文件内容传送给相应的Web浏览器。

各服务器工作原理讲解

FTP(文件传输协议)服务器工作原理FTP(文件传输协议)工作原理 目前在网络上,如果你想把文件和其他人共享。最方便的办法莫过于将文件放FTP服务器上,然后其他人通过FTP客户端程序来下载所需要的文件。 1、FTP架构 如同其他的很多通讯协议,FTP通讯协议也采用客户机 / 服务器(Client / Server )架构。用户可以通过各种不同的FTP客户端程序,借助FTP协议,来连接FTP服务器,以上传或者下载文件。 2、FTP通讯端口知识FTP服务器和客户端要进行文件传输,就需要通过端口来进行。FTP协议需要的端口一般包括两种:控制链路 --------TCP端口21所有你发往FTP服务器的命令和服务器反馈的指令都是通过服务器上的21端口传送的。数据链路--------TCP端口20数据链路主要是用来传送数据的,比如客户端上传、下载内容,以及列目录显示的内容等。3、FTP连接的两种方式在数据链路的建立上,FTP Server 为了适应不同的网络环境,支持两种连接模式:主动模式(Port)和被动模式(Pasv)。其实这两种连接模式主要是针对数据链路进行的,和控制链路无关。 主动模式主动模式是这样工作的:客户端把自己的高位端口和服务器端口21建立控制链路。所有的控制命令比如Is或get都是通过这条链路传送的。当客户端需要服务器端给它传送数据时,客户端会发消息给服务器端,告诉自己的位置和打开的高位端口(一般大于1024的端口都就叫高位端口),等候服务器的20端口和客户端打开的端口进行连接,从而进行数据的传输。当服务器端收到信息后,就会和客户端打开的端口连接,这样数据链路就建立起来了。

一台服务器上实现多个Web站点

一台服务器上实现多个Web站点 Windows 2000 Server安装成功后,一般会启动一个默认的Web站点,为整个网络提供Internet服务。在中小型局域网中,服务器往往只有一台,但是一个Web站点显然又无法满足工作需要。那么,能否在一台服务器上设置多个Web站点(以下我们简称为“一机多站”)呢?答案是肯定的,并有多种途径可以达到这一目的。我们知道,网络上的每一个Web站点都有一个惟一的身份标识,从而使客户机能够准确地访问。这一标识由三部分组成,即TCP端口号、IP地址和主机头名,要实现“一机多站”就需要在这三个方面下 工夫。 现在我们有一台Windows 2000 Server服务器,在这台服务器上要建立默认站点“教师之家”和新增站点“学生天地”(建立更多网站原理相同),下面我们分别探讨三种不同的实现途径。 途径一 TCP端口法 我们知道Web站点的默认端口一般为80,如果改变这一端口,就能实现在同一服务器上新增站点的目的。 假设服务器名为Master,安装有一块网卡,IP地址为192.168.0.1,那么安装IIS后会自动生成一个默认Web站点,我们就将其作为“教师之家”网站。点击“开始”→“程序”→“管理工具”→“Internet 服务管理器”,出现“Internet信息服务”窗口(请见附图)。右键单击“默认Web站点”,选择“属性”进行设置。在“Web站点标识”中,将说明改为“教师之家”,IP地址选择192.168.0.1,TCP端口保持默认的80不变。将制作好的网站文件拷贝到默认目录中,“教师之家”的设置就算完成了。 下面我们来增加“学生天地”站点。在“Internet信息服务”窗口中单击选定主机名Master,然后选择“操作”→“新建”→“Web站点”,出现“Web站点创建向导”窗口,依次点击[下一步],将站点说明定为“学生天地”,IP地址选择192.168.0.1,在TCP端口栏一定要将默认的80修改为其他值,如1050,选定主目录,设置好访问权限,“学生天地”站点的设置也完成了。 测试一下效果,在浏览器地址栏中输入http://192.168.0.1(默认的端口号80可以省略),回车,我们将访问到“教师之家”站点。输入http://192.168.0.1:1050(注意IP地址后的端口号一定不能少),则会出现“学生天地”站点。遗憾的是,采用这种方式设置的多站点无法与DNS结合使用。 途径二 IP地址法 一般情况下,一块网卡只设置了一个IP地址。如果我们为这块网卡绑定多个IP地址,每个IP地址对应一个Web站点,那么同样可以实现“一机多站”的目的。

相关文档
最新文档