在任意地方建立一个资料夹 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 日








