TCP, UDP
TCP, UDP, HTTP, HTTPS
網路七層協議 https://zh.wikipedia.org/wiki/OSI%E6%A8%A1%E5%9E%8B
TCP的特色在於傳輸資料時,會有握手的過程,以確保雙方身份,所以花的時間多一點。
而UDP的特色在於傳輸資料時,不需要驗 證資料,不保證正確性,發送端不知道數據是否會正確接收,所以速度較快速
一般瀏覽網頁時使用的協議是HTTP與HTTPS,其主要是基於TCP,為TCP往上之發展
Node.js中的TCP
在node.js主要使用net這個核心模組來提供TCP的相關功能,
一般主要是在做與硬體溝通時會使用到
具有TCP中的TCP server與 TCP client的兩種類型
實作
1.進入資料夾第10章中的TCP資料夾,執行test1.js來執行TCP server
2.開啟另一個terminal,一樣進入資料夾第10章中的TCP資料夾,執行test2.js
3.結合Repl
將client test2.js改為如下
var net = require('net');
var HOST = 'localhost';
var PORT = 8000;
var client = new net.Socket(); //建立一個新的socket實例
client.connect(PORT, HOST, function() {
console.log('CONNECTED TO: ' + HOST + ':' + PORT);
client.write('hello,this is from client!');//發送給server數據
const repl = require('repl');
var test = repl.start('請輸入: ').context;
test.hello = function() {
client.write('client說了hello!');
}
//之後啟動client後輸入hello()
});
client.on('data', function(data) {
console.log('DATA: ' + data);
});
client.on('close', function() {
console.log('Connection closed');
});利用 net module 製作 HTTP server
Node.js中的UDP
主要使用名為dgram的核心模組
全名為UDP / Datagram Sockets
實作
1.進入資料夾第10章中的UDP資料夾,執行test1.js來執行UDP server
2.開啟另一個terminal,一樣進入資料夾第10章中的UDP資料夾,執行test2.js
3.實作UDP廣播機制
UDP具有TCP所沒擁有的技能(廣播封包),可以把封包廣播給區網內的每一台電腦
使用廣播封包時,LAN 上面的每台電腦都會被迫處理這類封包
UDP廣播 (需要兩台以上電腦在同一個區網內才可測試)
接收方(所有區網上其他電腦所架設的UDP server)
廣播方client
但IPv6 不支援廣播,只支援群播(multicasting),所以可將程式碼改為如下
server
client
以上參考至http://stackoverflow.com/questions/14130560/nodejs-udp-multicast-how-to
可參考一篇不錯的文章:http://beej-zhtw.netdpi.net/07-advanced-technology/7-6-broadcast-packet-hello-world
Last updated
Was this helpful?