对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 + ‘\r\n‘;
        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() + ‘\r\n‘;
    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!‘);
});
时间: 2024-10-16 03:45:33

对node.js的net模块的一个测试的相关文章

Node.js的Formidable模块的使用

今天总结了下Node.js的Formidable模块的使用,下面做一些简要的说明. 1)     创建Formidable.IncomingForm对象 var form = new formidable.IncomingForm() 2)     form.encoding = 'utf-8' 设置表单域的编码 3)     form.uploadDir = "/my/dir"; 设置上传文件存放的文件夹,默认为系统的临时文件夹,可以使用fs.rename()来改变上传文件的存放位置

Node.js入门:模块机制

CommonJS规范  早在Netscape诞生不久后,JavaScript就一直在探索本地编程的路,Rhino是其代表产物.无奈那时服务端JavaScript走的路均是参考众多服务器端语言来实现的,在这样的背景之下,一没有特色,二没有实用价值.但是随着JavaScript在前端的应用越来越广泛,以及服务端JavaScript的推动,JavaScript现有的规范十分薄弱,不利于JavaScript大规模的应用.那些以JavaScript为宿主语言的环境中,只有本身的基础原生对象和类型,更多的对

Node.js 初识 fs 模块

fs 模块是文件操作的封装,它提供了文件的读取.写入.更名.删除.遍历目录.链接等 Unix 文件系统操作.与其他模块不同的是,fs 模块中所有的操作都提供了 同步 和 异步 两个版本,比如读取文件内容的函数有 异步的 fs.readFile() 和 同步的 fs.readFileSync(). Node.js 导入文件系统模块的语法如下: var fs = require('fs'); 1.异步和同步读取文件 fs.readFile(file[, options], callback(err,

Node.js的net模块

net模块提供了一个异步网络包装器,用于TCP网络编程,它包含了创建服务器和客户端的方法 创建TCP服务器 net.createServer方法 创建客户端去连接服务器 net.connect方法 简易聊天室服务端 chatServer.js var net = require('net'); // 创建TCP服务器 var server = net.createServer(); // 存储所有客户端socket var sockets = []; //接收客户端连接请求 server.on(

Node.js 教程 04 - 模块系统

前言: Node.js的模块系统类似于C/C++的文件引用,可以声明对象,也可以定义类 创建对象. 大家这么理解,就简单了. 定义: 为了让Node.js的文件可以相互调用,Node.js提供了一个简单的模块系统. 模块是Node.js应用程序的基本组成部分,文件和模块是一一对应的. 换言之,一个Node.js文件就是一个模块,这个文件可能是Javascript代码.JSON或者编译过的C/C++扩展. 实例一: 这个实例演示的是,在hello.js中创建一个方法,然后在主程序main.js中调

使用Node.js 和ws 模块构建WebSocket服务器

Node.js 中的ws 模块是最新的一个易用的.速度超快的web socket 实现,可以用来快速构建web socket 应用.其中还包含了wscat 命令行工具,可以用来模拟客户端或者服务器端. 在本实例中,我们将研究能够找到的最快的WebSocket 服务器.Node.js 中ws 模块不仅执行超快,而且使用也很简单.它实施方便,是本实例介绍Websocket 的理想选择. ws 模块很新,符合当前HyBi 协议草案,可以发送和接收数组类型数据(ArrayBuffer.Float32Ar

node.js实用小模块

1.浮点数操作 npm install float 2.MD5加密类 npm install MD5 3.xml解析类 1 npm install elementtree 4.转换字符串大小写 1 npm install convert_str 5.SoapClient 1 npm install soap 6.字符串操作类 1 npm install string 7.缓存 1 npm install memory-cache 8.jsontoxml;  objecttoxml 1 npm i

Node.js中的模块机制

本文为读书笔记. 一.CommonJS的模块规范 Node与浏览器以及 W3C组织.CommonJS组织.ECMAScript之间的关系 Node借鉴CommonJS的Modules规范实现了一套模块系统,所以先来看看CommonJS的模块规范. CommonJS对模块的定义十分简单,主要分为模块引用.模块定义和模块标识3个部分. 1. 模块引用 模块引用的示例代码如下: var math = require('math'); 在CommonJS规范中,存在require()方法,这个方法接受模

Node.js中的模块接口module.exports浅析

在写node.js代码时,我们经常需要自己写模块(module).同时还需要在模块最后写好模块接口,声明这个模块对外暴露什么内容.实际上,node.js的模块接口有多种不同写法.这里作者对此做了个简单的总结. 返回一个JSON Object 如下代码是一个简单的示例. 1 var exp = { 2 "version": "1.0.0", 3 "function1": null, 4 "module1": null, 5 };