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连接相关推荐

  1. Netty 通过 WebSocket 编程实现服务器和客户端全双工长连接<2021SC@SDUSC>

    2021SC@SDUSC Netty 通过 WebSocket 编程实现服务器和客户端全双工长连接 实例要求: Http 协议是无状态的, 浏览器和服务器间的请求响应一次,下一次会重新创建连接. 要求 ...

  2. Java 服务器与客户端的简单连接

    今天刚学了一点socket,写了一个服务器与客户端的简单连接 利用的主要就是socket建立连接,发送数据 以下几个方法要注意: Socket(InetAddress  address, int  p ...

  3. 服务端挂了,客户端的TCP连接还会在吗?

    一.服务端进程崩溃,客户端会发生什么? TCP 的连接信息是由内核维护的,所以当服务端的进程崩溃后,内核需要回收该进程的所有 TCP 连接资源,于是内核会发送第一次挥手 FIN 报文,后续的挥手过程也 ...

  4. 套接字的连接(服务器与客户端一对一的连接)

    套接字:是一种通信机制,通过这种机制,客户/服务器系统的开发工作既可以在本机可以络进行.                                   注:套接字的创建和使用与管道是有区别的,套 ...

  5. 如何用C语言写一个服务器和客户端(TCP)

    如果想要自己写一个服务器和客户端,我们需要掌握一定的网络编程技术,个人认为,网络编程中最关键的就是这个东西--socket(套接字).socket(套接字):socket 的原意是"插座&q ...

  6. [转]关于HTTP服务器每个客户端2个连接的限制

    这两天猫在家里搞一个多线程的断点续传得C#程序,发现同时只能开2个线程下载,其他的线程一律要等待,这样就导致下载大文件时其他线程经常超时,郁闷好久.今天回公司无意中发现了一个帖子,终于真相大白了,   ...

  7. 软件工具——SFTP服务器、客户端安装及连接教程

    FTP是一种文件传输协议,服务端和客户端可视化软件很多,只要支持相同的协议标准基本可以互相连通. SFTP相对于FTP在数据传输中添加了数据加密,以损失数据传输效率为代价提高数据传输安全性.但加密解密 ...

  8. 记一次因tcp_tw_recycle误设置为1导致服务器无法正常建立TCP连接的问题排查

    背景 为某SaaS平台的数据推送服务写的接口无法及时响应数据推送请求,导致频繁出现因请求超时而导致的数据推送失败,进而严重影响业务使用.接口部署在公司的阿里云上. 故障点梳理 #mermaid-svg ...

  9. 基于 TCP Socket 的服务器与客户端的简单连接

    简单的讲下流程: 1. 服务器会创建一个监听 socket, 用来监听客户端的连接请求,接着配置一下监听 socket 的 IP.port.protocol 2. 绑定配置好的信息 以及监听 sock ...

最新文章

  1. java 提取url参数_Java提取URL某个参数的值
  2. Scala模式匹配和类型系统
  3. 微软“杀”不死的数据库软件
  4. leetcode -- Single Number
  5. [转贴]一个农村高考落榜生的心路历程
  6. 【C++代码整洁之道】遗留系统之殇
  7. ERStudio逆向工程生成ER模型
  8. python里apply用法_python中apply函数是什么?
  9. ACM周赛ICPC昆明资格赛
  10. 【202209秋招软开银行面试C++】
  11. 搭建一条区块链需要多少时间和资金
  12. 我的世界服务器插件文件夹,各位大神服务器没有插件文件夹怎么办
  13. 计算机主机usb端口使用不了,电脑usb接口不能用,教您电脑usb接口不能用怎么办...
  14. MT【306】圆与椭圆公切线段
  15. python数据分析之pandas数据合并
  16. 微信小程序简单demo
  17. pdfbox报错缺少字体问题解决
  18. 【借鉴/转载】WSI的处理
  19. 架构师图谱之微服务消息队列
  20. [生存志] 第127节 子午行流注

热门文章

  1. 微信属于计算机操作系统吗,一款国产操作系统的微信电脑版使用体验
  2. python实现树莓派监控_树莓派上安装pyaudio 及 对声音实时监控
  3. h5页面的认识与制作
  4. C++中四种cast转换
  5. 测试语文水平的软件,语文试卷质量分析
  6. Alpha阶段敏捷冲刺①Scrum 冲刺博客
  7. 2020-12-26 工作常用 Linux 操作:磁盘卸载、 自动化挂盘脚本 、磁盘分区合并、ansible、git 设置相关
  8. 记一次拯救NAS硬盘
  9. Leetcode 858. 镜面反射 Python解法
  10. 爬取今日头条收藏夹文章列表信息