Hello World Nodejs Socket

在任意地方建立一个资料夹 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 将程式跑起来

看到 Server running at http://127.0.0.1:3000/ 表示成功

进入网址 http://127.0.0.1:3000/ 查看

看到 Hello World 表示成功

将伺服器停止(Ctrl+C),并且将程式码中的 World 改成 Stust

并且再次将伺服器跑起来

会发现变成了 Hello 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 则可以离开程式

SHXJ
Latest posts by SHXJ (see all)

发布留言