服务器与客户端的TCP连接
TCP通讯之服务器与客户端的连接
- 相关的网站:
- 一.第一个案例
- 二.Node.js使用TCP通讯
- (一)、创建TCP Server
- (二)、创建 TCP Client
- 三.Node.js 搭建TCP服务器
- 概述
- 创建TCP服务
- TCP服务端API
- 回调事件
- 连接服务器的客户端数量
- 获取客户端发送的数据
- 发送数据给客户端
- 四.最终的实现(建立了一个服务器程序,两个客户端程序)
- 1.`server.js`服务器程序:
- 2.`client1.js`客户端1程序
- 3.`client2.js`客户端2程序
- 五
- sever端
- client端
我们的目的是在终端实现服务器和客户端的TCP通讯:
也就是说以代码来实现:
注
程序的缺点:当其中一个客户端退出,服务器就退出了,导致其他正在访问的客户端与服务器失去了连接;
相关的网站:
https://blog.csdn.net/qq_41885673/article/details/122216791
https://www.v5w.com/plc/566.html
https://www.v5w.com/js/js%e7%9f%a5%e8%af%86%e7%82%b9/433.html
https://www.csdn.net/tags/NtDaMgwsNDYwMS1ibG9n.html
https://zhuanlan.zhihu.com/p/411656922
一.第一个案例
链接:https://blog.csdn.net/weixin_36247891/article/details/112831201?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522165216334016781683970991%2522%252C%2522scm%2522%253A%252220140713.130102334.pc%255Fall.%2522%257D&request_id=165216334016781683970991&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2allfirst_rank_ecpm_v1~rank_v31_ecpm-1-112831201-null-null.142v9control,157v4control&utm_term=ModbusTCP%E7%9A%84js%E5%AE%9E%E7%8E%B0&spm=1018.2226.3001.4187
nodejs中使用modbus-serial库创建Modbus TCP读取设备的数据
在nodejs中安装modbus-serial库
本人使用的开发环境是Windows10下的VSCode,安装并配置好了npm、node、cnpm等工具,使用cnpm安装了modbus-serial库,可以在npm中搜到modbus-serial包以及它的介绍,
在对应的VSCode终端下使用cnpm install modbus-serial -g安装modbus-serial库
cnpm install modbus-serial -g
非甲烷总烃分析仪有三个关键参数,即总烃、CH4、NMHC的浓度,对应Modbus寄存器地址分别为:22,25,28,获取对应寄存器数据后还需要乘以0.01
使用modbus-serial库,使用Modbus TCP协议读取对应寄存器中的数据
相关nodejs代码如下:
var moment = require('moment')// create an empty modbus client(创建一个空的 modbus 客户端)var ModbusRTU = require("modbus-serial")var client = new ModbusRTU();// open connection to a tcp line(打开与 tcp 线路的连接)// 创建Modbus TCP连接,IP是15.18.200.23,端口502client.connectTCP("15.18.200.23", { port: 502 });// 读取非甲烷总烃的关于总烃、甲烷、NMHC这3个寄存器(寄存器地址分别为22,25,28)中的浓度// 每隔5秒钟读取保持寄存器的值,从寄存器地址22开始读取,读10个寄存器到data数组中setInterval(function(){client.readHoldingRegisters(22, 10, function(err, data){// 获取当前时间//moment.locale('zh-cn');console.log("----------------------------------------------------------------------");console.log("数据时间是:" + moment().format('YYYY年MM月DD日 HH时mm分ss秒'));console.log("总烃的浓度是:" + data.data[0] * 0.01 + "ppmV");// 总烃浓度对应的寄存器地址为22console.log("CH4的浓度是:" + data.data[3] * 0.01 + "ppmV"); // CH4浓度对应的寄存器地址为25console.log("NHMC的浓度是:" + data.data[6] * 0.01 + "ppmV"); // NHMC浓度对应的寄存器地址为28console.log("----------------------------------------------------------------------");//console.log(data.data);});}, 5000);
上述代码使用了JavaScript 日期处理类库Moment.js对当前日期进行格式化,相关介绍见Moment.js-JavaScript 日期处理类库
使用很简单,比如项要获取当前的时间,按照2019年12月9日 16时07分23秒这种格式输出,代码如下:
var moment = require('moment');var currentTime = moment().format('YYYY年MM月DD日 HH时mm分ss秒');console.log("当前时间为:" + currentTime);nodejs中安装moment库也很简单,一条命令搞定,如下:cnpm install moment -g
相关代码测试输出如下:
数据时间是:2019年12月11号 16时07分56秒
总烃的浓度是:2.78ppmV
CH4的浓度是:2.07ppmV
NHMC的浓度是:0.70ppmV
数据时间是:2019年12月11号 16时08分01秒
总烃的浓度是:2.78ppmV
CH4的浓度是:2.07ppmV
NHMC的浓度是:0.70pmV
数据时间是:2019年12月11号 16时08分06秒
总烃的浓度是:2.78ppmV
CH4的浓度是:2.07ppmV
NHMC的浓度是:0.70ppmV
—————————————————
服务器与客户端的TCP连接相关推荐
- Netty 通过 WebSocket 编程实现服务器和客户端全双工长连接<2021SC@SDUSC>
2021SC@SDUSC Netty 通过 WebSocket 编程实现服务器和客户端全双工长连接 实例要求: Http 协议是无状态的, 浏览器和服务器间的请求响应一次,下一次会重新创建连接. 要求 ...
- Java 服务器与客户端的简单连接
今天刚学了一点socket,写了一个服务器与客户端的简单连接 利用的主要就是socket建立连接,发送数据 以下几个方法要注意: Socket(InetAddress address, int p ...
- 服务端挂了,客户端的TCP连接还会在吗?
一.服务端进程崩溃,客户端会发生什么? TCP 的连接信息是由内核维护的,所以当服务端的进程崩溃后,内核需要回收该进程的所有 TCP 连接资源,于是内核会发送第一次挥手 FIN 报文,后续的挥手过程也 ...
- 套接字的连接(服务器与客户端一对一的连接)
套接字:是一种通信机制,通过这种机制,客户/服务器系统的开发工作既可以在本机可以络进行. 注:套接字的创建和使用与管道是有区别的,套 ...
- 如何用C语言写一个服务器和客户端(TCP)
如果想要自己写一个服务器和客户端,我们需要掌握一定的网络编程技术,个人认为,网络编程中最关键的就是这个东西--socket(套接字).socket(套接字):socket 的原意是"插座&q ...
- [转]关于HTTP服务器每个客户端2个连接的限制
这两天猫在家里搞一个多线程的断点续传得C#程序,发现同时只能开2个线程下载,其他的线程一律要等待,这样就导致下载大文件时其他线程经常超时,郁闷好久.今天回公司无意中发现了一个帖子,终于真相大白了, ...
- 软件工具——SFTP服务器、客户端安装及连接教程
FTP是一种文件传输协议,服务端和客户端可视化软件很多,只要支持相同的协议标准基本可以互相连通. SFTP相对于FTP在数据传输中添加了数据加密,以损失数据传输效率为代价提高数据传输安全性.但加密解密 ...
- 记一次因tcp_tw_recycle误设置为1导致服务器无法正常建立TCP连接的问题排查
背景 为某SaaS平台的数据推送服务写的接口无法及时响应数据推送请求,导致频繁出现因请求超时而导致的数据推送失败,进而严重影响业务使用.接口部署在公司的阿里云上. 故障点梳理 #mermaid-svg ...
- 基于 TCP Socket 的服务器与客户端的简单连接
简单的讲下流程: 1. 服务器会创建一个监听 socket, 用来监听客户端的连接请求,接着配置一下监听 socket 的 IP.port.protocol 2. 绑定配置好的信息 以及监听 sock ...
最新文章
- java 提取url参数_Java提取URL某个参数的值
- Scala模式匹配和类型系统
- 微软“杀”不死的数据库软件
- leetcode -- Single Number
- [转贴]一个农村高考落榜生的心路历程
- 【C++代码整洁之道】遗留系统之殇
- ERStudio逆向工程生成ER模型
- python里apply用法_python中apply函数是什么?
- ACM周赛ICPC昆明资格赛
- 【202209秋招软开银行面试C++】
- 搭建一条区块链需要多少时间和资金
- 我的世界服务器插件文件夹,各位大神服务器没有插件文件夹怎么办
- 计算机主机usb端口使用不了,电脑usb接口不能用,教您电脑usb接口不能用怎么办...
- MT【306】圆与椭圆公切线段
- python数据分析之pandas数据合并
- 微信小程序简单demo
- pdfbox报错缺少字体问题解决
- 【借鉴/转载】WSI的处理
- 架构师图谱之微服务消息队列
- [生存志] 第127节 子午行流注