Socket程式設計之實現瀏覽器與Socket的互動
阿新 • • 發佈:2019-01-06
我們只瀏覽器發起一個http請求,後臺對應服務會接收並且處理該請求。
那麼它是怎麼實現的呢?也就是底層原理是什麼?
我們都知道http協議的底層是基於TCP/IP協議的,
而TCP/IP協議的實現形式就是Socket。
所以理論上,後臺寫一個Socket服務端是可以和瀏覽器互動的,
而http請求是有固定的格式的,傳送請求會發送一個請求頭訊息,還有一些請求引數之類的,
當然這些工作瀏覽器幫我們做了。
這裡我們寫一個Socket服務端實現與瀏覽器的互動。
直接看程式碼
public static void main(String[] args) throws Exception{
ServerSocket server = new ServerSocket(9898);
while(true){
Socket socket = server.accept();
InputStreamReader r = new InputStreamReader(socket.getInputStream());
BufferedReader br = new BufferedReader(r);
String readLine = br.readLine();
while(readLine != null && !readLine.equals("")){
System.out.println("獲取到資料:" + readLine);
readLine = br.readLine();
}
String html = "http/1.1 200 ok\n"
+"\n\n"
+"1234服務端。。。。";
PrintWriter pw = new PrintWriter(socket.getOutputStream());
pw.println(html);
pw.close();
}
}
這裡:html是拼接的,包括響應頭訊息+響應體,
瀏覽器是按照這個來解析的。
瀏覽器中輸入:http://localhost:9898/
搞定。