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!');
    });
  • 相关阅读:
    由前序和中序遍历结果构建二叉树
    Java学习笔记数组与ArrayList
    Java学习笔记字符串
    Java学习笔记关于默认类型或访问权限的总结
    javascript学习笔记之事件和事件处理
    2010年2月1日学习笔记
    Web.config保存整个站点的设置
    ANT的十五大最佳实践
    配置ajaxToolkit的方法【转】
    Java学习笔记Iterator迭代器(Ps.instanceof的用法)
  • 原文地址:https://www.cnblogs.com/lswit/p/5016914.html
Copyright © 2011-2022 走看看