zoukankan      html  css  js  c++  java
  • 对node.js的net模块的一个测试

    抄表系统在接收电表发回的数据的时候,发现有些电表发回的数据没有被socket端口接收到,最后等待时间耗尽,留下了指令超时的记录。因为是在进行虚拟的测试,因此可以根据对服务器发的tcp报文进行分析,分析结果发现在发出抄表指令之后1s之内,虚拟的电表就返回了抄表结果,然后socket服务器没有收到这个记录。

    因此做了这个测试,来测试抄表时间和抄表数量对于socket服务器有什么影响。

    服务器端:

    var net = require('net');
    var fs = require('fs');
    
    var server = net.createServer(function (socket) {
        socket.on('data', function (data) {
            
            data = JSON.parse(data);
            // console.log(data.i + ' : ' + data.curr);
            var record = data.i + ' : ' + data.curr + '
    ';
            fs.appendFile("./服务器日志.txt", record, function(err) {
                if (err) {
                    console.log("指令记录失败:" + record);
                }
            });
    
            var time = new Date();
            var current = data.i + ' : ' + time.getFullYear() + "-" + (time.getMonth() + 1) + "-" + time.getDate() + " " + time.getHours() + ":" + time.getMinutes() + ":" + time.getSeconds() + ":" + time.getMilliseconds() + " 服务器端 ====>> 客户端" ;
            socket.write(current);
        });
        socket.on('end',function () {
            console.log('连接断开');
        });
        socket.on('error',function () {
            console.log('连接断开');
        })
    });
    
    server.listen(8814, function() {
        console.log('server start!');
    });

    客户端:

    var net = require('net');
    var fs = require('fs');
    
    var i = 1;
    
    var client = net.connect({port:8814}, function() {
    
        setInterval(emmit, 500);
        // client.end();
        
    });
    
    function emmit() {
        if (i <= 4000) {
            console.log(i);
            var time = new Date();
            var current =  time.getFullYear() + "-" + (time.getMonth() + 1) + "-" + time.getDate() + " " + time.getHours() + ":" + time.getMinutes() + ":" + time.getSeconds() + ":" + time.getMilliseconds()  + " 客户端 ====>> 服务器端" ;
            var data = {};
            data.curr = current;
            data.i = i;
            data = JSON.stringify(data);
            client.write(data);
        };
        i++;
    }
    
    client.on('data', function(data) {
        // console.log(data.toString());
        var record = data.toString() + '
    ';
        fs.appendFile("./客户端日志.txt", record, function(err) {
            if (err) {
                console.log("指令记录失败:" + record);
            }
        });
    });
    
    client.on('end', function() {
        console.log('client disconnected');
    });
    
    client.on('error', function() {
        console.log('server error!');
    });
  • 相关阅读:
    《ODAY安全:软件漏洞分析技术》学习心得-----shellcode的一点小小的思考
    关于《加密与解密》的读后感----对dump脱壳的一点思考
    React-Native(四):React Native之View学习
    React-Native(二):React Native开发工具vs code配置
    SqlServer优化:当数据量查询不是特别多,但数据库服务器的CPU资源一直100%时,如何优化?
    React-Native(一):React Native环境搭建
    游戏资源收集
    Java-NIO(九):管道 (Pipe)
    Java-NIO(八):DatagramChannel
    Java-NIO(七):阻塞IO与非阻塞IO
  • 原文地址:https://www.cnblogs.com/lswit/p/5016914.html
Copyright © 2011-2022 走看看