美文网首页
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