搭建物联网服务器基于nodejs

偶然的机遇,今天接触了服务器。刚开始不知道服务器为何物,今天算是了解了个大概。

搭建的TCP服务器算一个载体,可以把一些硬件获取到的数据全部接入网络,然后通过一个接口发给手机或者上位机。通过特定的IP地址。

我的手机想要操控一盏灯。可以通过服务器。将硬件端连入搭建好的服务器,然后软件端也连入对应的服务器。当服务器接收到手机发过去的指令后,处理一下再把数据发送给硬件端,硬件段接收到指令 ,实现开关灯。

IP地址:就是给互联网上每一台主机(或路由器)的每一个接口分配一个在全世界范围内是唯一的32位的标识符/

 

http://nodejs.cn/api/net.html#net_server_listening  nodejs API文档

 

const net = require('net'); //作用类似头文件
var number;

const server = net.createServer((c) => {
  // 'connection' listener
  console.log('client connected');
  c.on('end', () => {
    console.log('client disconnected');
  });
  c.on('data',function (data){
	 // console.log(data);
	 number = parseInt(data);
	 number+=1;
	 console.log(number);
  }) 
  
  client.push(c);
  c.write('hello\r\n');
});
server.on('error', (err) => {
  console.log('监听出错');
});
server.listen(8124, () => {
  console.log('server bound');
});

console.log('server bound123');

第一句话类似于C语言的头文件。分析一下,代码执行的时候会最先输出 server bound123。可能存在延迟还没有完全成功建立好服务器。然后才会输出 sever bound 代表完成  正在监听端口号的数据。   此时就算代码执行完成 。  然后一旦有用户连接,就会分配一个c给用户。去执行createServer C中的程序。这就有点类似于EDA的always语句。每当有东西改变的时候进入一下。 如果有用户连接,就会显示一个 client connected ,然后 发送给用户hello 。。 一旦用户发送数据给我 收到的数据是字符型的 利用parseint转化为数字型 将这个变量+1 打印在我的窗口上。 ======   

 最基本的用户连接弄好了 打算稍微升级一下,因为最后要做的项目是硬件和手机同时相连接,然后将硬件发给我的数据进行处理之后发送给手机。

const net = require('net'); 
var number;
var client=new Array([2]);

const server = net.createServer((c) => {
  // 'connection' listener
  console.log('client connected');
  c.on('end', () => {
    console.log('client disconnected');
  });
  c.on('data',function (data){
	 // console.log(data);
	 number = parseInt(data);
	 number+=1;
	 console.log(number);
	for(var i=0;i<2;i++){
		try{
		client[i].write(number.toString());
				}catch(e){c.write('对方暂时无法应答');  }
		}
  }) 
  
  client.push(c);
  c.write('hello\r\n');
});
server.on('error', (err) => {
  console.log('监听出错');
});
server.listen(8124, () => {
  console.log('server bound');
});

console.log('server bound123');

创建了一个数组 存放了2个用户。一个手机端一个硬件端。   如果只有一个用户连接的时候 ,可能会出现数组越界情况,因为有一个是空的找不到。 所以采用了独特的try函数。 试着去给两个用户端发送相同的信息,如果用户不存在,就转而发送给存在的用户 用户不存在。 这样便简单的实现了 2个用户的交互。    因为number是数字形式, 发送的都是字符,所以在try发送后面 增加了 number.toString();将数字转化为字符。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值