博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
node.js模拟抄表 tcp服务端和客户端
阅读量:6074 次
发布时间:2019-06-20

本文共 2841 字,大约阅读时间需要 9 分钟。

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('错误');})

 

转载于:https://www.cnblogs.com/lswit/p/4973530.html

你可能感兴趣的文章
微信小程序开发及相关设置小结
查看>>
K-means算法原理
查看>>
cesium可视化空间数据1
查看>>
为 .NET Core 设计一个 3D 图形渲染库
查看>>
oracle隐含参数的查看与修改
查看>>
jdbcType与javaType的对应关系
查看>>
IDEA里如何多种方式打jar包,然后上传到集群
查看>>
一个小时学会jQuery
查看>>
lo4j 日志级别
查看>>
BZOJ 2839: 集合计数 [容斥原理 组合]
查看>>
WCF测试小程序
查看>>
MySQL一键安装
查看>>
【Spring源码分析】非懒加载的单例Bean初始化前后的一些操作
查看>>
Android ListView圆角
查看>>
第一个C#控制台程序
查看>>
C语言及程序设计[套餐]课程主页
查看>>
常量指针与指针常量
查看>>
AngularJs ng-change事件/指令(转)
查看>>
哲学家就餐问题代码
查看>>
蛇形填数
查看>>