创建TCP服务器Node.js中提供?.NET模块 , 用来实现TCP服务器与TCP客户端之间的通信 。
当我们使用JAVAScript来开发服务端的时候 , 只需要调用net模块就可以了 。比如现在要创建一个TCP服务器 , 代码如下:App.js
const net = require("net");const server = net.createServer(() => {console.log("客户端与服务器端连接已经建立")})server.listen("8000", 'localhost', function () {console.log("服务端开始监听")console.log("地址信息:",server.address())})
这是简单的一个TCP通信 , 现在执行命令:node app.js
在浏览器输入localhost:8000 。
这是终端的信息:
【Node基于TCP建立的服务器】服务端开始监听地址信息: { address: '127.0.0.1', family: 'IPv4', port: 8000 }客户端与服务器端连接已经建立
我们的浏览器输入localhost:8000回车后 , 就是客户端与服务端建立的TCP通信 。启动服务端 , 但是客户端没有连接 , 终端信息如下:
服务端开始监听地址信息: { address: '127.0.0.1', family: 'IPv4', port: 8000 }
createServer方法返回被创建的TCP服务器 , 它的回调函数有一个参数 , 是TCP服务器监听的socket端口对象 。这是在createServer的回调函数中监听connection事件 。
然而 , 我们可以单独对connection事件进行监听:
const net = require("net")const server = net.createServer();server.listen(8000, 'localhost', function () {console.log('地址信息:', server.address())});server.on("connection", function (socket) {console.log('客户端开始已经连接');socket.setEncoding('utf8'); // 设置内容格式socket.on("data", function (res) {console.log("data=https://www.isolves.com/it/wlyx/fwq/2022-07-18/=", socket.bytesRead)});socket.on('end', function () {console.log("客户端关闭连接")})})
现在我们建立好了TCP服务器 。
可以使用socket对象的pipe方法将客户端发送的数据流写入到其他文件中去:
客户端的完整代码:
const net = require("net")const server = net.createServer();const file = require('fs').createWriteStream('./text.txt');server.listen(8000, 'localhost', function () {console.log('地址信息:', server.address())});server.on("connection", function (socket) {console.log('客户端开始已经连接');socket.setEncoding('utf-8'); // 设置内容格式socket.on("data", function (res) {console.log("data=https://www.isolves.com/it/wlyx/fwq/2022-07-18/=", socket.bytesRead)});socket.pause();socket.resume();socket.pipe(file, { end: false });// 客户端关闭连接时候 , 添加的结束标志socket.on("end", function () {file.end("结束了");socket.unpipe(file); // 取消对文件的写入})socket.on('end', function () {console.log("客户端关闭连接")})})
创建TCP客户端const net = require("net");const client = new net.Socket();client.setEncoding("utf8");client.connect(8000, 'localhost', function () {console.log('已经连接服务器了');client.write('你好')});client.on('data', function (data) {console.log("服务器发送的数据", data)})
客户端连接服务端后 , 服务端的日志文件text.txt , 写入了“你好”
推荐阅读
- windows基于nginx部署Spring-boot+vue前后端分离项目
- 基于Python+vue的自动化运维、完全开源的云管理平台
- 傻傻分不清的TCP keepalive和HTTP keepalive
- tcp/ip协议包含哪几层?
- 一种使用TCP自定义加密通信的APT样本分析
- 基于图像识别框架Airtest的Windows项目自动化测试实践
- 基于逻辑回归的“但见证是”讨论
- 基于傅玄理论的中西医结合诊疗思维模式的构建
- node-xlsx 简单几行代码处理导入导出 excel 数据,免费开源的 js 库
- 基于中医传承辅助平台对张景岳《新方八阵》用药规律分析