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?