2015-11-18 09:38:01
在客户端javascript脚本代码中,对于二进制数据并没有提供一个很好的支持。然后在nodejs中需要处理像TCP流或文件流时,必须要处理二进制数据。因此在node.js中,定义了一个Buffer类,该类用来创建一个专门存放二进制数据的缓存区。
服务端
var net = require('net');var server = net.createServer(function (socket) { socket.on('data', function (data) { // console.log(data); //如果传递的数据是复杂类型的,需要使用JSON.parse来对数据进行格式化;如果是数字或者字符串等简单类型的,可以直接使用buf.toString转为字符串。 data = JSON.parse(data); // data = data.toString(); console.log(data); console.log('此次需要的类型是:' + data.transType); if (data.order == 'order1' && data.transType == 'time') { var time = new Date(); data.time = time.getMinutes().toString() + ':' + time.getSeconds().toString() + '.' + time.getMilliseconds().toString(); data.transType = 'time'; // console.log('data:'); console.log(data); console.log('发回时间 ' + data.time); data = JSON.stringify(data); // console.log(typeof data); // console.log('data:'); console.log(data); socket.write(data); } else if (data.transType == 'result') { var num = 0; for (var i = 0 ; i < 10 ; i++) { num = num + i; } num = num + parseInt(Math.random() * 10); data.result = num; console.log('发回结果 ' + data.result); data = JSON.stringify(data); socket.write(data); } }) socket.on('end', function () { console.log('客户端断开连接\n'); }) socket.on('error', function (data) { console.log(data); console.log('客户端错误'); })});server.listen(8124, function() { console.log('服务端开启');})
客户端
var net = require('net');var client = net.connect({port:8124}, function() { console.log('客户端连接'); // setInterval(function() { var time = new Date(); var a = {}; a.order = 'order1'; a.transType = 'time'; var a = JSON.stringify(a); // a.setEncoding('utf-8'); console.log(a); client.write(a); // }, 1000);});client.on('data', function(data) { // console.log('data:'); // console.log(data); data = data.toString("utf-8"); data = JSON.parse(data); // console.log(data); if(data.transType == 'time') { console.log('抄表需要时间:' + data.time); data.transType = 'result'; data = JSON.stringify(data); client.write(data); // console.log('需要结果'); } else if (data.transType == 'result') { console.log('抄表结果:' + data.result + '\n'); // client.end(); // console.log('data:'); // console.log(data); }});client.on('end', function() { console.log('断开连接');})client.on('error', function(data) { console.log(data); console.log('错误');})