Nodejs学习笔记

此处记录一些NodeJS学习过程中的笔记,并非是完整的入门教程,入门教程可以参照菜鸟教程

net模块

net模块用于tcp请求的客户端与服务端创建,在渗透测试的脚本编写中起着很重要的作用

client

加载net模块

1
var net = require('net');

连接到指定地址

注意此时执行完此条代码将会直接发起连接,连接成功将会调用回调函数

1
2
3
var client = net.connect({host:"192.168.100.3",port:6666},function(){
console.log("连接到服务器")
})

绑定数据接收回调函数

这里需要注意,由于网络数据包长度限制,在数据接收中可能会将数据包进行分包传输,因此如果需要进行大数据量的传输,需要在接收回调函数中设计一个接收缓冲区,将接收数据进行拼接。

1
2
3
client.on("data",function(data){
console.log(data)
})

绑定连接断开回调函数

1
2
3
client.on("finish",function(){
console.log('与服务器断开连接')
})

server

加载net模块

1
var net = require('net');

绑定连接传入回调事件

注意在此处先行进行了对于客户端接入的回调处理函数,因为后续一旦调用了listen函数,将会直接开启监听。当执行完当前函数,将会直接回传此监听事件的对象

1
2
3
4
5
6
7
8
9
10
11
var server = net.createServer(function(cli_sock){
console.log("客户端设备接入")
cli_sock.on("finish",function(){
console.log("客户端断开连接")
})
cli_sock.write('Hello World!\r\n');
cli_sock.pipe(cli_sock);
cli_sock.on("data",function(data){
console.log(data.toString())
})
})

上述代码会在客户端接入时,绑定客户端对应连接cli_sock的finish事件,并向客户端发送’Hello World!\r\n’,随后通过pipe直接将套接字cli_sock的输入直接定向到输出,最后绑定data事件,在接收到客户端消息时打印消息

开启监听

1
2
3
server.listen(8080, function() { 
console.log('server is listening');
});

http模块

http客户端

加载http模块

1
var http = require('http');

指定连接请求

1
2
3
4
5
6
var options = {
method: 'GET',
host: 'www.baidu.com',
port: '80',
path: '/'
};

设置回调函数

1
2
3
4
5
6
7
8
9
10
11
12
var callback = function(response){
// 不断更新数据
var body = '';
response.on('data', function(data) {
body += data;
});

response.on('end', function() {
// 数据接收完成
console.log(body);
});
}

发起请求

1
2
3
4
5
var req = http.request(options, callback);
req.end();

或者直接
http.request(options, callback).end();

child_process模块

执行系统命令

最简洁不带回显

1
require("child_process").exec("ipconfig")

最简洁带回显

1
require("child_process").exec("ipconfig",function(err,stdout,stderr){console.log(stdout)})

正常使用

1
2
3
4
var exec = require("child_process").exec;
require("child_process").exec("ipconfig",function(err,stdout,stderr){
console.log(stdout)
})

数据库连接

MySQL

安装依赖包mysql

1
npm install mysql

连接数据库

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15

var mysql = require('mysql');
var connection = mysql.createConnection({
host : 'localhost',
user : 'root',
password : '123456',
database : 'test'
});

connection.connect();

connection.query('SELECT 1 + 1 AS solution', function (error, results, fields) {
if (error) throw error;
console.log('The solution is: ', results[0].solution);
});

其他所有增删改查都依赖于函数

1
connection.query()

因此不再做更多的赘述。

MongoDB

安装依赖包mongodb

1
npm install mongodb

SQLite3

1
2
3
4
5
6
7
8
const sqlite3 = require("sqlite3")
var db = new sqlite3.Database("./nekodb.db",sqlite3.OPEN_READONLY)
db.all(sql_js, function(err,res){
if(res != undefined && res.length>0)
callback(err,res)
else
callback(0,[])
})
作者

nekokami0527

发布于

2022-05-08

更新于

2022-10-28

许可协议

评论