国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發設計 > 正文

用Java實現Web服務器

2019-11-18 11:28:54
字體:
來源:轉載
供稿:網友

java實現Web服務器 
 
一、HTTP協議的作用原理

  HTTP協議的作用原理包括四個步驟:

1.連接:Web瀏覽器與Web服務器建立連接。2.請求:Web瀏覽器通過socket向Web服務器提交請求。3.應答:Web瀏覽器提交請求后,通過HTTP傳送給Web服務器。Web服務器接到請求后,進行事務處理,處理結果又通過HTTP傳回給Web瀏覽器,從而在Web瀏覽器上顯示出所請求的頁面。4.關系連接:當應答結束后,Web瀏覽器與Web服務器必須斷開,以保證其它Web瀏覽器能夠與Web服務器建立連接。

二、用Java實現Web服務器的程序設計

  根據上述HTTP協議的作用原理,實現GET請求的Web服務器程序的方法如下:

1.創建ServerSocket類對象,監聽端口8080。這是為了區別于HTTP的標準TCP/ip端口80而取的;2.等待、接受客戶機連接到端口8080,得到與客戶機連接的socket;3.創建與socket關聯的輸入流instream和輸入出流outstream;
式為:GET路徑/文件名HTTP/1.0;4.從與socket關聯的輸入流instream中讀取一行客戶機提交的請求信息,請求信息的格式為:GET路徑/文件名HTTP/1.0;5.從請求信息中獲取請求類型。假如請求類型是GET,則從請求信息中獲取所訪問的Html文件名。沒有HTML文件名時,則以index.htm1作為文件名;6.假如HTML文件存在,則打開HTML文件,把HTTP頭信息和HTML文件內容通過socket傳回給Web服務器,然后關閉文件,否則發送錯誤信息給Web瀏覽器;7.關閉與相應Web瀏覽器連接的socket字。

  下面的程序是根據上述方法編寫的,可實現多線程的Web服務器,以保證多個客戶機能同時與該Web服務器連接。

 //WebServer.java用Java編寫Web服務器

 import java.io.*;

 import java.net.*;

 import java.util.Date;

 public class WebServer{

 public static void main(String args[])

{

 int i=1,PORT=8080;

 ServerSocket server=null;

 Socketclient=null;

 try{

 server=new ServerSocket(PORT);

 System.out.PRintln

("Web Server is listening on port"

+server.getLocalPort());

 for(;;){

 client=server.accept();

//接受客戶機的連接請求

 new Connection Thread(client,i).start();

 i++;

 }

 }catch(Exception e){System.out.println(e);}

 }

 }

/*Connnection Thread類完成

與一個Web瀏覽器的通信*/

 class Connection Thread extends Thread{

 Socket client;//連接Web瀏覽器的socket字

 int counter;//計數器

 public Connection Thread(Socketcl,int c){

 client=cl;

 counter=c;

 }

 public void run()//線程體

 {

 try{

 String deskIP=client.getInetAddress().toString();

//客戶機IP地址

 int destport=client.getPort();

//客戶機端口號

 System.out.println

("Connecction"+counter+":

connected to "+destIP+"on port

 "+destport+".");

 PrintStream outstream=new printStream

(client.getOoutputStream());

 DataInputStreaminstream+new DataInputStream

(client.getInputStream());

 String inline=instream.readLine();

//讀取Web瀏覽器提交的請求信息

 System.out.println("Received:"+inline);

 if(getrequest(inline)){//假如是GET請求

 String filename=getfilename(inline);



發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 永清县| 丰原市| 浮山县| 前郭尔| 锦州市| 商洛市| 广元市| 东至县| 闸北区| 凉山| 化德县| 徐州市| 湖南省| 莱芜市| 浙江省| 京山县| 宜宾县| 潮州市| 巴中市| 阜城县| 溧水县| 邛崃市| 北安市| 中方县| 贺兰县| 德惠市| 长海县| 长岭县| 涿州市| 罗山县| 衡水市| 格尔木市| 天镇县| 拉孜县| 秦安县| 江永县| 井陉县| 永川市| 宜城市| 富平县| 察雅县|