簡介
本文將會講述以下重點
如何使用 nodejs 撰寫 tcp 的伺服器
透過 wireshark 等工具驗證傳輸的 Data 內容
1. 如何使用 nodejs 撰寫 tcp 的伺服器
為了能夠有效展示透過 Nodejs 撰寫 TCP server 的傳輸資料流程
以下將透過撰寫兩個程式來做邏輯驗證
simple-tcp-app.ts: 接收資料用的 TCP server
simple-sender.ts: 傳輸資料用的 TCP client
1.1 nodejs 的 net module
net module 是 Nodejs 用來處理網路傳輸的最底層處理模組
可以用來處理底從封包資料的傳送
在其之上還有比較網路應用的處理模組比如 http, https module 等等
這邊使用 net module 來做 tcp 這種比較底層資料格式資料的處理
1.2 撰寫 TCP Server 邏輯
這邊主要使用 tcp server 來接收 tcp client 所傳入的資料並且顯示在 server console 上
實作邏輯如下:
透過 net module 建立一個 TCP server
設定服務阜口為 3099 ,並且設定監聽資料事件與啟動事件
import * as net from 'net';
const port = 3099;
const server = net.createServer((socket) => {
socket.on('data', (data) => {
console.log(data);
});
});
server.listen(port, '127.0.0.1', () => {
console.log('opened server on', server.address());
});
1.2 撰寫 TCP Client 邏輯
這邊 tcp client 主要就是傳輸資料給 tcp server
因為 TCP 傳輸主要是透過 binary 資料傳輸
因此會使用 Buffer 來做資料轉換
實作邏輯如下:
透過 net module 建立一個 TCP client 連線到服務阜口為 3099的服務
設定連線後執行傳輸動作
import * as net from 'net';
const socket = net.createConnection({
host: '127.0.0.1',
port: 3099
}, () => {
const buffer = Buffer.alloc(8);
buffer[0] = 12;
buffer[1] = 34;
socket.write(buffer);
});
1.3 執行 client 與 server 來驗證傳輸
測試步驟:
啟動 server
啟動 client 執行接收
檢查 server 接收 log
2. 透過 wireshark 等工具驗證傳輸的 Data 內容
開啟 wireshark 檢查資料 loopback interface 封包如下
故意把傳輸 size 改小再度驗證
import * as net from 'net';
const socket = net.createConnection({
host: '127.0.0.1',
port: 3099
}, () => {
const buffer = Buffer.alloc(2);
buffer[0] = 12;
buffer[1] = 34;
socket.write(buffer);
});
故意把傳輸 size 改小再度驗證 oopback interface 封包如下
3. 參考文件
[1]:net module [2]:http module [3]:https module