Node.js學習之Telnet

Telnet協議是TCP/IP協議族中的一員,是Internet遠程登陸服務的標準協議和主要方式。
它爲用戶提供了在本地計算機上完成遠程主機工作的能力,即旨在提供雙向的虛擬終端。

大多數的主流操作系統都內置了Telnet客戶端。但是我的win10操作系統無法連接,我也無法解決,所以就使用win10自帶的Linux Bash中的Telnet進行測試。

首先創建項目目錄:telnet-test
在目錄下創建server.js文件,代碼如下:

// 加載依賴模塊
var http = require('http');

// 創建服務器
http.createServer(function (request, response) {

    // 發送 HTTP 頭部 
    // HTTP 狀態值: 200 : OK
    // 內容類型: text/html
    response.writeHead(200, {'Content-Type': 'text/html'});

    // 發送響應數據 "Hello World",並對world加粗
    response.end('Hello <b>World<b>\n');
}).listen(8888);

// 終端打印如下信息
console.log('Server running at http://127.0.0.1:8888/');

win + R 輸入CMD,進入項目目錄,輸入:node server.js,結果如下:

這裏寫圖片描述

打開瀏覽器,輸入:http://127.0.0.1:8888/,出現如下結果說明服務器端正常。

這裏寫圖片描述

再次點擊win + R 啓動CMD,輸入bash,再輸入:telnet 127.0.0.1 8888,結果如下:

這裏寫圖片描述

出現上圖結果說明已經正常工作了,但是服務器端的“Hello World”並沒有到客戶端。原因在於,要往TCP連接中寫數據,必須首先創建一個HTTP請求,這就是套接字(socket)。所以在終端輸入:GET / HTTP/1.1,然後按下回車兩次。結果如下:

這裏寫圖片描述

HTTP在請求和響應消息前使用頭信息(header)來描述不同的消息內容。發送內容的類型(type)在Content-Type頭信息中標註的。
爲測試頭信息,現將server.js稍作修改:

var http = require('http');
http.createServer(function (request, response) {
    response.writeHead(200);
    // 注意在world兩側將上了加粗標籤
    response.end('Hello <b>World<b>\n');
}).listen(8888);
console.log('Server running at http://127.0.0.1:8888/');

再次啓動Node服務,瀏覽器結果如下:

這裏寫圖片描述

瀏覽器並沒有看到富文本,原因是,HTTP客戶端(瀏覽器)並不知道服務器發送過來的內容是什麼類型,沒有在頭信息中加入內容類型,所以瀏覽器默認內容是text/plain類型,也就是普通文本類型,進而不會將它作爲HTML來渲染。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章