抄表系统在接收电表发回的数据的时候,发现有些电表发回的数据没有被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