JS知识点归纳 : TCP通讯测试

1.引言

工业应用中,常见的通讯方式有串口,以太网,CAN,EtheCat等;

前文介绍了串口的通讯方法,使用serialport.js实现;

本文介绍下以太网的通讯方法->TCP!

为什么说着说着以太网,就扯到TCP了?

网络通讯可分为物理层->链路层->网络层(IP)->传输层(TCP)->应用层,传输层以下操作系统和物理硬件已经帮我们实现了,我们不需要关心了.想了解其原理的,可以百度脑补一样;

传输层与应用层之间有一个Socket接口,我们的应用层的通讯协议就是在socket基础上开发出来的;

Node.js 的 net 模块可以方便的创建TCP 服务,net模块API可以到此处查阅:https://www.runoob.com/nodejs/nodejs-net-module.html;

下面使用 net 模块演示创建的tcp 服务和客户端的实例.

2.创建TCP Server

const net = require('net');
const tcp_server = net.createServer();  // 创建 tcp server

const Sockets = {};
let SocketID = 1;

// 监听 端口
tcp_server.listen(3000,function (){
    console.log('tcp_server listening 3000');
});

// 处理客户端连接
tcp_server.on('connection',function (socket){
    console.log(socket.address());
    Sockets[SocketID] =socket;
    SocketID++;
    DealConnect(socket)
})

tcp_server.on('error', function (){
    console.log('tcp_server error!');
})

tcp_server.on('close', function () {
    console.log('tcp_server close!');
})


// 处理每个客户端消息
function DealConnect(socket){

    socket.on('data',function(data){
        data = data.toString();
        // 向所有客户端广播消息
       for(let i in Sockets){
           Sockets[i].write(data);
       }
        // socket.write(data);
        console.log('received data %s',data);
    })

    // 客户端正常断开时执行
    socket.on('close', function () {
        console.log('client disconneted!');
    })
// 客户端正异断开时执行
    socket.on("error", function (err) {
        console.log('client error disconneted!');
    });
}

3.创建client

const net = require('net');

// 指定连接的tcp server ip,端口
const options = {
    host : "127.0.0.1",  
    port : 3000
}


// 连接 tcp server
const tcp_client=net.connect(options,function(){
    console.log('connected to Server');
})

tcp_client.on('connect',function(){
    setInterval(() => {
        tcp_client.write('www.v5w.com calling...');  
    }, 2000);
})

// 接收数据
tcp_client.on('data',function(data){
    console.log('received data: %s from server', data.toString());
})

tcp_client.on('end',function(){
    console.log('data end!');
})

tcp_client.on('error', function () {
    console.log('tcp_client error!');
})

学习更多知识,加QQ群:1098090823
威武网 » JS知识点归纳 : TCP通讯测试

提供最优质的资源集合

立即查看 了解详情