Skip to main content

Command Palette

Search for a command to run...

基礎 Network 概念與 Nodejs http module範例

Updated
1 min readView as Markdown

簡介

本文主要有兩大重點

  1. 簡述網路概觀與如何透過 Switch, Router 等等設備讓兩台電腦裝置互通訊息
  2. 以 Nodejs 作為範例來讓使用同一個網路內的裝置可以透過 ip:port 的形式傳遞訊息

如何讓兩台不同裝置互通訊息

1 當兩台裝置距離很近

1.1 使用存取裝置如 usb 或是 CD 從一台裝置複製到一台

1.2 透過 Switch ,Switch 會透過網路卡上的 mac address 來互相通訊

2 當兩台裝置距離很遠

2.1 透過 Router, Router 會給予 IP 讓每個電腦可以透過 IP 與 PORT 來彼此通訊

3 網路IP的配置

目前實際的網路連接其實是透過海底電纜在做連結

真實的網路IP 主要會是透過網路服務提供商來做配置給 Router

其中 127.0.0.1 是一個特殊的 ip 又稱為 look back ip 或是 localhost

當在瀏覽器打入這個 ip 時,瀏覽器會自動導入內部 ip 查訊 PORT

4 Nodejs 實際範例

以下是一個運行在 interface 為 192.168.211.144 且提供 PORT 為 4080 的服務器

import * as http from 'http';

const port = 4080;
const hostname  = "192.168.211.144";
const server = http.createServer((req, res) => {
  const data: Record<string, string> = { message: 'Hi there' };
  res.setHeader('Content-Type', 'application/json');
  res.setHeader('Connection', 'close');
  res.statusCode = 200;
  res.end(JSON.stringify(data));
});

server.listen(port, hostname, () => {
  console.log(`Server running at http://${hostname}:${port}`);
})

如果運行

ts-node app.ts

則可以使用同一個 interface 的裝置上使用 http://192.168.211.144:4080 讀取到這個服務

5 參考資料

[^1]: mac address

[^2]: world cable map

More from this blog

AI 時代下的系統可理解性問題

GAI 的時代下,近一年很流行 Vibe-coding,幾乎人人都在草率地使用 Vibe-coding 一詞來指一系列的軟體工程實踐。它指的是一種開發者不親自手打 coding,而是僅透過自然語言向 AI 描述需求(給出「方向」或「感覺」),完全放手讓 AI 代理去自動生成、拼湊出整個應用程式的開發風格。 然而,在專業的軟體工程領域,這股看似美好的「Vibe」背後,隱藏著極高的安全隱患與系統崩潰危

Aug 24, 20263 min read94
AI 時代下的系統可理解性問題

Get Your Hands Dirty on Clean Architecture CH5 Use Case

書本連結 前言 會挑這本書看的人,應該都是關心自己負責專案的軟體架構的人。不只希望開發的軟體能滿足客戶的明確需求,也希望能滿足可維護性(maintainability)的隱性需求,以及自己對結構與美觀習慣的要求。 要能滿足上述這些要求很難,因為專案通常不會按照計畫進行。可能變因有 deadline,最後的 API 與承諾的不同,又或者我們的設計無法很好的貼合需求的變化所需。。因此完美的架構只有在一

Jul 2, 20264 min read68
Get Your Hands Dirty on Clean Architecture CH5 Use Case
M

MicroFIRE

75 posts