美文网首页
Nodejs发起http/TCP/UDP请求、串口通讯

Nodejs发起http/TCP/UDP请求、串口通讯

作者: 李霖弢 | 来源:发表于2021-03-18 17:47 被阅读0次

http

通过node自带的http模块可以进行http请求,但通常使用第三方库request进行http请求

request({
    url: url,//请求路径
    method: "POST",//请求方式,默认为get
    headers: {//设置请求头
        "content-type": "application/json",
    },
    body: JSON.stringify(requestData)//post参数字符串
}, function(error, response, body) {
    if (!error && response.statusCode == 200) {
    }
}); 

TCP

原生通过net模块

server
var net = require('net');
var tcp_server = net.createServer();  // 创建 tcp server

var Sockets = {};
var SocketID = 1;

// 监听 端口
tcp_server.listen(5678,function (){
    console.log('tcp_server listening 5678');
});

// 处理客户端连接
tcp_server.on('connection',function (socket){
    console.log(socket.address());
    Sockets[SocketID] =socket;
    SocketID++;
    DealConnect(socket)
})

tcp_server.on('error', function (){
    console.log('tcp_server error!');
})

tcp_server.on('close', function () {
    console.log('tcp_server close!');
})


// 处理每个客户端消息
function DealConnect(socket){

    socket.on('data',function(data){
        data = data.toString();
        // 向所有客户端广播消息
       for(var i in Sockets){
           Sockets[i].write(data);
       }
        // socket.write(data);
        console.log('received data %s',data);
    })

    // 客户端正常断开时执行
    socket.on('close', function () {
        console.log('client disconneted!');
    })
// 客户端正异断开时执行
    socket.on("error", function (err) {
        console.log('client error disconneted!');
    });
}
client
var net = require('net');

// 指定连接的tcp server ip,端口
var options = {
    host : '172.30.20.10',  
    port : 5678
}

var tcp_client = net.Socket();

// 连接 tcp server
tcp_client.connect(options,function(){
    console.log('connected to Server');
    tcp_client.write('I am tcp_client of node!');
})

// 接收数据
tcp_client.on('data',function(data){
    console.log('received data: %s from server', data.toString());
})

tcp_client.on('end',function(){
    console.log('data end!');
})

tcp_client.on('error', function () {
    console.log('tcp_client error!');
})

UDP

原生通过dgram模块

server
var dgram = require('dgram');
//创建 udp server
var udp_server = dgram.createSocket('udp4');
udp_server.bind(5678); // 绑定端口

// 监听端口
udp_server.on('listening', function () {
    console.log('udp server linstening 5678.');
})

//接收消息
udp_server.on('message', function (msg, rinfo) {
    strmsg = msg.toString();
    udp_server.send(strmsg, 0, strmsg.length, rinfo.port, rinfo.address); //将接收到的消息返回给客户端
    console.log(`udp server received data: ${strmsg} from ${rinfo.address}:${rinfo.port}`)
})
//错误处理
udp_server.on('error', function (err) {
    console.log('some error on udp server.')
    udp_server.close();
})
client
var dgram = require('dgram');
var udp_client = dgram.createSocket('udp4'); 

udp_client.on('close',function(){
    console.log('udp client closed.')
})

//错误处理
udp_client.on('error', function () {
    console.log('some error on udp client.')
})

// 接收消息
udp_client.on('message', function (msg,rinfo) {
    console.log(`receive message from ${rinfo.address}:${rinfo.port}:${msg}`);
})

//定时向服务器发送消息
setInterval(function(){
    var SendBuff = 'hello 123.';
    var SendLen = SendBuff.length;
    udp_client.send(SendBuff, 0, SendLen, 5678, '172.30.20.10'); 
},3000);

串口通讯

var SerialPort = require('serialport');

相关文章

网友评论

      本文标题:Nodejs发起http/TCP/UDP请求、串口通讯

      本文链接:https://www.haomeiwen.com/subject/hjjpcltx.html