前置条件
- 需要安装node环境
创建项目
- 创建server文件
#创建server文件并进入
mkdir server && cd server
创建服务端
- 创建server.js
// 引入net模块
const net = require("net");
// 端口号和地址
const port = 3000;
const host = "127.0.0.1";
const server = net.createServer((socket) => {
// 2. 等待连接,连接后触发 socket(Buffer)
console.log("2. server is connected to" + socket);
});
// 1. 开启服务
server.listen(port, host, () => {
console.log("1. server is running");
});
- vscode运行server.js
// ctrl+`打开终端
node server.js
- 输出的结果
PS E:\node\the_server> node .\server.js
1. server is running // server服务已经开启
创建客户端
- 创建client.js
// 引入net模块
const net = require("net");
const port = 3000;
const host = "127.0.0.1";
// 创建连接
const client = net.createConnection(port, host, port);
// 1. 连接server,成功后触发
client.on("connect", () => {
console.log("1. client is connected");
});
- vscode运行client.js
// ctrl+shift+` 新建终端
node client.js
- 输出的结果
PS E:\node\the_server> node .\client.js
1. client is connected // 成功连接server.js
- 当成功连接server.js时,server.js的等待连接也会收到响应
PS E:\node\the_server> node .\server.js
1. server is running
2. server is connected to[object Object] // socket为一个Buffer对象
此时服务端和客户端的连接已经完成了.
传递数据
接下来就是传递数据
- 服务端 server.js
// 引入net模块
const net = require("net");
const port = 3000;
const host = "127.0.0.1";
// 创建个TCP服务
const server = net.createServer((socket) => {
// 2. 等待连接,连接后触发 socket(Buffer)
console.log("2. server is connected to" + socket);
// 3. 收到client.js 的data请求
socket.on("data", (data) => {
console.log("3. server get client data: ", data.toString());
// 写入并返回
socket.write("this is server");
});
});
// 1. 开启服务
server.listen(port, host, () => {
console.log("1. server is running");
});
- 客户端 client.js
// 引入net模块
const net = require("net");
const port = 3000;
const host = "127.0.0.1";
// 创建连接
const client = net.createConnection(port, host, port);
// 1. 连接server,成功后触发
client.on("connect", () => {
console.log("1. client is connected");
});
// 2. 请求data, 未传参数为Buffer
client.on("data", (data) => {
// 3. 返回的
console.log("2. client get server data:", data.toString());
});
client.end("this is client");
- 输出结果
// server.js
PS G:\vue-study\Node\server> node .\server.js
1. server is running
2. server is connected to[object Object]
3. server get client data: this is client
// client.js
PS G:\vue-study\Node\server> node .\client.js
1. client is connected
2. client get server data: this is server
- 使用
.end
或.write
均可写入数据
关闭服务
- server.js
// 引入net模块
const net = require("net");
const port = 3000;
const host = "127.0.0.1";
const server = net.createServer((socket) => {
// 2. 等待连接,连接后触发 socket(Buffer)
console.log("2. server is connected to" + socket);
// 3. 收到client.js 的data请求
socket.on("data", (data) => {
console.log("3. server get client data: ", data.toString());
// 写入并返回
socket.write("this is server");
});
// 客户端关闭触发
socket.on("end", function () {
console.log("4. 客户端关闭连接");
});
// 服务端关闭触发
socket.on("close", () => {
console.log("5. server is close");
});
});
// 1. 开启服务
server.listen(port, host, () => {
console.log("1. server is running");
});
- client.js
// 引入net模块
const net = require("net");
const port = 3000;
const host = "127.0.0.1";
// 创建连接
const client = net.createConnection(port, host, port);
// 1. 连接server,成功后触发
client.on("connect", () => {
console.log("1. client is connected");
});
// 2. 请求data, 未传参数为Buffer
client.on("data", (data) => {
// 3. 返回的
console.log("2. client get server data:", data.toString());
});
client.end("this is client");
client.on("close", () => {
console.log("3. client is closed");
});
- 输出
// server.js
PS G:\vue-study\Node\server> node .\server.js
1. server is running
2. server is connected to[object Object]
3. server get client data: this is client
4. 客户端关闭连接
5. server is close
// client.js
PS G:\vue-study\Node\server> node .\client.js
1. client is connected
2. client get server data: this is server
3. client is closed
PS G:\vue-study\Node\server>