標籤:接收 串連 get請求 類比 [] gif sock file baidu
一、web開發介紹
網頁串連過程(B/S):用戶端使用瀏覽器,發送http請求到web伺服器上,伺服器進行回應。Browser/Server
http請求內容:
GET/HTTP/1.1 說明是get請求,使用的是http1.1的協議。
Accept:image/gif..... 說明我能夠接收的圖片格式有如下...
Accept-Language:zh-cn. 說明我能接收的語言是中文.
User-Agent:xxx 說明我能支援的瀏覽器有xxx.
Host:www.baidu.com 說明我要訪問的主機是www.baidu.com
網頁串連過程(C/S):用戶端(用戶端自己寫的程式)使用tcp/ip協議發送請求道伺服器上,伺服器進行回應。Client/Server
Tcp/ip請求:其實http請求就是包好了的Tcp/ip請求。
二、類比開發一個web伺服器
1.先寫一個html檔案用於顯示(放在E:\\WebTest/Hello.html)
2.寫一個MyWebServer.java如下:
import java.io.BufferedReader;
import java.io.FileReader;
import java.io.OutputStream;
import java.net.ServerSocket;
import java.net.Socket;
public class MyWebServer {
public static void main(String[] args) throws Exception{
// TODO 自動產生的方法存根
ServerSocket ss=new ServerSocket(9999); //設定連接埠號碼9999
System.out.println("在9999連接埠上等待串連..."); //等有請求發送過來
Socket s=ss.accept();
System.out.println("在9999連接埠上串連成功...");
OutputStream os=s.getOutputStream();
BufferedReader br=new BufferedReader(new FileReader("E:\\WebTest/Hello.html"));
String bfString="";
while ((bfString=br.readLine())!=null) {
os.write(bfString.getBytes());
}
br.close();
os.close();
s.close();
}
}
3.編譯運行此java檔案後,到瀏覽器進入http://localhost:9999/,就能顯示最先寫的網頁。
4.值得一提的是,如果MyWebServer.java寫的是80連接埠,則直接http://localhost即可訪問。
5.而且,如果想多人同時訪問此此頁面,需要將代碼改為
import java.io.BufferedReader;
import java.io.FileReader;
import java.io.OutputStream;
import java.net.ServerSocket;
import java.net.Socket;
public class MyWebServer {
public static void main(String[] args) throws Exception{
// TODO 自動產生的方法存根
ServerSocket ss=new ServerSocket(9999); //設定連接埠號碼9999
While(true){
System.out.println("在9999連接埠上等待串連..."); //等有請求發送過來
Socket s=ss.accept();
System.out.println("在9999連接埠上串連成功...");
OutputStream os=s.getOutputStream();
BufferedReader br=new BufferedReader(new FileReader("E:\\WebTest/Hello.html"));
String bfString="";
while ((bfString=br.readLine())!=null) {
os.write(bfString.getBytes());
}
}
br.close();
os.close();
s.close();
}
}
J2EE(一)——開發簡單WEB伺服器