在任意地方建立一個資料夾 Project0504,並且在該資料夾下開啟 VSCODE
在這裡建立一個檔案,名稱為 app.js
將以下的程式碼貼上
const http = require('http');
const hostname = '127.0.0.1';
const port = 3000;
const server = http.createServer((req, res) => {
res.statusCode = 200;
res.setHeader('Content-Type', 'text/plain');
res.end('Hello World');
});
server.listen(port, hostname, () => {
console.log(`Server running at http://${hostname}:${port}/`);
});
儲存檔案並且按下右上角的 播放按鈕 或是 按下 Ctrl+Alt+N 將程式跑起來
進入網址 http://127.0.0.1:3000/ 查看
將伺服器停止(Ctrl+C),並且將程式碼中的 World 改成 Stust
並且再次將伺服器跑起來
更改 Content type
覆蓋以下的程式碼
const http = require('http');
const hostname = '127.0.0.1';
const port = 3000;
const server = http.createServer((req, res) => {
res.statusCode = 200;
res.setHeader('Content-Type', 'text/html');
res.end('<h1>Hello Stust</h1> <p> This course is for nodejs.</p>');
});
server.listen(port, hostname, () => {
console.log(`Server running at http://${hostname}:${port}/`);
});
將伺服器停止並且再度開啟進入網頁,就會變成下圖的樣子
Socket 傳送封包
新增兩個檔案,名稱 udp_client.js 以及 udp_server.js
將以下的程式碼貼上到兩個檔案
const dgram = require('dgram');
const message = Buffer.from('Some bytes');
const client = dgram.createSocket('udp4');
client.send(message, 41234, 'localhost', (err) => {
client.close();
});
const dgram = require('dgram');
const server = dgram.createSocket('udp4');
server.on('error', (err) => {
console.log(`server error:\n${err.stack}`);
server.close();
});
server.on('message', (msg, rinfo) => {
console.log(`server got: ${msg} from ${rinfo.address}:${rinfo.port}`);
});
server.on('listening', () => {
const address = server.address();
console.log(`server listening ${address.address}:${address.port}`);
});
server.bind(41234);
// Prints: server listening 0.0.0.0:41234
將終端機分成兩邊,分別執行 Server 以及 Client
node udp_client.js
右邊執行 Client 後,左邊的 Server 就可以收到訊息

將 Client 端的程式碼稍微修改一下
const dgram = require('dgram');
const message = Buffer.from('Some bytes');
const client = dgram.createSocket('udp4');
/*client.send(message, 41234, 'localhost', (err) => {
client.close();
});*/
client.send("Hi", 41234, 'localhost')
client.send("I am 4a6g0062", 41234, 'localhost')
再次執行 Client

Socket 傳送使用者輸入的資料
將 upd_client.js 程式更改為以下
const readline = require('readline');
const dgram = require('dgram');
const message = Buffer.from('Some bytes');
const client = dgram.createSocket('udp4');
const rl = readline.createInterface({
input: process.stdin,
output: process.stdout
});
console.log('Please Input your data:')
rl.on('line', (input) => {
//console.log(`Received: ${input}`);
client.send(input, 41234, 'localhost', (err) => {
client.close();
});
});
再次執行 Client 端可以發使用者輸入的資料

Udp Socket Echo Server
將 udp_client.js 以及 udp_server.js 覆蓋成以下的程式碼
const readline = require('readline');
const dgram = require('dgram');
const message = Buffer.from('Some bytes');
const client = dgram.createSocket('udp4');
const rl = readline.createInterface({
input: process.stdin,
output: process.stdout
});
client.on('message',(msg, rinfo)=>{
console.log(`Client Received: ${msg} from ${rinfo.address}:${rinfo.port}`)
})
console.log('Please Input your data:')
rl.on('line', (input) => {
//console.log(`Received: ${input}`);
if (input == 'exit') process.exit()
client.send(input, 41234, 'localhost', (err) => {
//client.close();
});
});
const dgram = require('dgram');
const server = dgram.createSocket('udp4');
server.on('error', (err) => {
console.log(`server error:\n${err.stack}`);
server.close();
});
server.on('message', (msg, rinfo) => {
console.log(`server got: ${msg} from ${rinfo.address}:${rinfo.port}`);
server.send(msg, rinfo.port, rinfo.address)
});
server.on('listening', () => {
const address = server.address();
console.log(`server listening ${address.address}:${address.port}`);
});
server.bind(41234);
// Prints: server listening 0.0.0.0:41234
再次執行 Server 以及 Client 並且輸入字串,可以看到 Client 端也收到了來自 Server 的回覆

輸入 exit 則可以離開程式

Latest posts by SHXJ (see all)
- 受保護的內容: NAS 版 Mathbot 管理網站與 Linebot 啟動方法 - 2024 年 11 月 15 日
- Realtime 啥鬼的 - 2021 年 6 月 15 日
- nodejs 數學遊戲 - 2021 年 6 月 8 日








