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!');
    });
  • 相关阅读:
    你的程序员是在努力工作还是在偷懒?
    React 入门实例教程[阮一峰的网络日志] (分享)
    给大家分享下坐标转换的代码的JS和Python两个版本的源码【转】
    一个不错的 在线字体 网站
    用Python作GIS之一:介入STARS
    UI“三重天”之selenium--封装(二)
    UI“三重天”之Selenium(一)
    “点点点”的误区
    (转)CentOS 7安装Zabbix 3.4
    Ui"三重天"之重温Uiaumator(1)
  • 原文地址:https://www.cnblogs.com/lswit/p/5016914.html
Copyright © 2011-2022 走看看